UITextField - 检测内置 iPhone 键盘上的输入?

Posted

技术标签:

【中文标题】UITextField - 检测内置 iPhone 键盘上的输入?【英文标题】:UITextField - detect input on built-in iPhone keyboard? 【发布时间】:2012-01-15 06:53:14 【问题描述】:

[UITextFieldVariable 成为FirstResponder];正在将键盘带到屏幕上。

如何检测用户何时在键盘上键入字母? 我想知道每次按下一个键。

提前非常感谢!

【问题讨论】:

【参考方案1】:

使用NSNotificationCenter 并查看UITextFieldTextDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self
          selector:@selector(textFieldChanged)
              name:UITextFieldTextDidChangeNotification
            object:textField];

现在实现一个函数-(void)textFieldChanged;,每次调用该函数时,将UITextField 中的新文本与旧文本进行比较。改变的是被按下的按钮。

UITextFieldTextDidBeginEditingNotificationUITextFieldTextDidEndEditingNotification 执行类似的操作,以确保即使没有输入任何文本(如按反斜杠)也按下按钮。

【讨论】:

太棒了!我只需要删除 @selector 函数名称后的冒号就可以了 @selector(textFieldChanged) 糟糕的答案:“对 UITextFieldTextDidBeginEditingNotification 和 UITextFieldTextDidEndEditingNotification 执行类似的操作,以确保即使没有输入文本(如按反斜杠)也按下按钮。”这实际上是不真实的! 其实如果你想删除看这里:***.com/a/13942968/274179【参考方案2】:

为您的文本字段指定一个委托。每当用户更改文本(包括在键盘上键入字符)时,都会调用委托的 -textField:shouldChangeCharactersInRange:replacementString: 方法。

【讨论】:

如果文本字段为空并且用户按下了反斜杠,则不会调用此方法。 Dimme,当文本为空并按下反斜杠时,这仍然不起作用。您的 UITextFieldTextDidChangeNotification 解决方案与委托的 textField:shouldChangeCharactersInRange:replacementString 有何不同?不是,他们都做同样的事情!这不能拦截每个退格键

以上是关于UITextField - 检测内置 iPhone 键盘上的输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 iPhone 中 UITextField 的颜色?

iPhone——获取 UITextField 调整后的字体大小

UITextField 编辑问题 - iPhone SDK

iPad 和 iPhone 中的 UITextField 键盘类型

iphone:uitextfield,具有相同委托的多个文本字段?

在 UITextField 键盘中启用“返回按钮”(objective-c/iphone)