小胖說事48-----iOS 文本框變化 監聽的3種方式

聲明屬性

@interface LoginControler() <UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *userName;

@end

1,代理方式

-(void) viewDidLoad
{
    _userName.delegate = self;    //添加代理
}

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"%@", textField.text);
    return true;    //如果NO就不會顯示
}

2,通知 

這種方式在通知完後還需要釋放,麻煩,用的少

-(void) viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:nil];
    //addObserver:self 監聽者對象
    //name 監聽的改變對象的方法
    //object 監聽的對象 nil 全部監聽
}

-(void)textChange
{
    NSLog(@"%@", _userName.text);
}

-(void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self]; //移除監聽
}

3,動態添加執行方法

-(void) viewDidLoad
{
    [_userName addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
    
    //forControlEvents 觸發事件
}

-(void)textChange
{
    NSLog(@"%@", _userName.text);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章