我想在用户按任何键盘键时检测到。
任何只在键入任何字符时调用的方法,而不是在显示键盘时调用。
谢谢!
答案 0 :(得分:39)
每次用户按键时,您都可以直接处理键盘事件:
如果是 UITextField
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
// Do something here...
}
如果是 UITextView :
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text {
// Do something here...
}
因此,每次使用键盘按下的每个键都会调用其中一个方法。
您也可以使用NSNotificationCenter。您只需要在ViewDidLoad方法中添加任何这些。
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
UITextField:
[notificationCenter addObserver:self
selector:@selector(textFieldText:)
name:UITextFieldTextDidChangeNotification
object:yourtextfield];
然后,您可以将代码放在方法textFieldText:
中:
- (void)textFieldText:(id)notification {
// Do something here...
}
<强>的UITextView 强>
[notificationCenter addObserver:self
selector:@selector(textViewText:)
name:UITextViewTextDidChangeNotification
object:yourtextView];
然后,您可以将代码放在方法textViewText:
中:
- (void)textViewText:(id)notification {
// Do something here...
}
希望它有所帮助。
答案 1 :(得分:1)
假设由于用户点击UITextfield而显示键盘,您可以自己成为委托并实现此方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
每次用户按下键时都会调用它。