检测虚拟键盘上的按键

时间:2011-07-30 11:26:44

标签: iphone ios

我正在为儿子做一个小孩子的游戏,涉及虚拟键盘上的计时。

是否可以检测虚拟键盘上的按键何时被按下?即得到一个触摸通知(touchesBegan)?我不需要知道按下哪个键,只是当按下动作开始时。

3 个答案:

答案 0 :(得分:2)

对于TextView,您可以使用...

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
- (void)textViewDidChange:(UITextView *)textView

对于TextField,您可以使用...

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

请参阅Apple网站上的UITextViewDelegate和UITextFieldDelegate。

答案 1 :(得分:1)

无法直接从虚拟键盘获取触摸事件。但是,您可以使用放置在屏幕外的UITextField,以便它不可见,并调用becomeFirstResponder来显示键盘。然后,正如Khomsan建议的那样,您可以实现委托方法textView:shouldChangeTextInRange:,以便在按下某个键时收到通知。

更简洁的可能性是编写实现UIControl协议的自定义UIKeyInput。您只需要提供insertText:deleteBackwardhasText的实现(对于这一个,您只需返回YES)。要使键盘可见,您需要再次为自定义控件调用becomeFirstResponder

这两种方法的共同之处在于,只有在释放键时才会通知您(以便输入文本),而不是触摸实际开始时。正如我所说,不可能直接获得tochesBegan事件。如果您需要,您可能需要实现自己的屏幕键盘。

答案 2 :(得分:-3)

是的,你可以使用:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //do what you need
    [super touchesBegan:touches withEvent:event];
}