Как определить клавиатуру нажатой в iphone?

Я хочу обнаружить, когда пользователь нажимает любую клавишу клавиатуры.

Любой метод, который вызывается только при вводе любого символа, а не при отображении клавиатуры.

Спасибо!!

Ответ 1

Вы можете напрямую обрабатывать события клавиатуры каждый раз, когда пользователь нажимает клавишу:

В случае 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...
}

Надеюсь, что это поможет.

Ответ 2

Предполагая, что клавиатура отображается в результате нажатия пользователем на поле UIText, вы можете сделать себя делегатом и реализовать этот метод:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

Он будет вызываться каждый раз, когда пользователь нажимает клавишу.