聲明屬性
@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); }