我想检测用户何时按下任何键盘键。
仅在键入任何字符而不是在显示键盘时调用的任何方法。
谢谢!!
每次用户按键时,您都可以直接处理键盘事件:
迅速
对于 Textfield,请使用以下委托方法 -
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
}
对于 TextView 使用以下委托方法 -
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
}
目标 C
如果是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...
}
希望能帮助到你 。
假设由于用户点击 UITextfield 而显示键盘,您可以让自己成为委托并实现此方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
每次用户按键时都会调用它。