如何检测iPhone中按下的键盘键?

时间:2013-04-15 13:41:55

标签: iphone ios objective-c

我想在用户按任何键盘键时检测到。

任何只在键入任何字符时调用的方法,而不是在显示键盘时调用。

谢谢!

2 个答案:

答案 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

每次用户按下键时都会调用它。