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
中的新文本与旧文本进行比较。改变的是被按下的按钮。
对UITextFieldTextDidBeginEditingNotification
和UITextFieldTextDidEndEditingNotification
执行类似的操作,以确保即使没有输入任何文本(如按反斜杠)也按下按钮。
【讨论】:
太棒了!我只需要删除 @selector 函数名称后的冒号就可以了 @selector(textFieldChanged) 糟糕的答案:“对 UITextFieldTextDidBeginEditingNotification 和 UITextFieldTextDidEndEditingNotification 执行类似的操作,以确保即使没有输入文本(如按反斜杠)也按下按钮。”这实际上是不真实的! 其实如果你想删除看这里:***.com/a/13942968/274179【参考方案2】:为您的文本字段指定一个委托。每当用户更改文本(包括在键盘上键入字符)时,都会调用委托的 -textField:shouldChangeCharactersInRange:replacementString:
方法。
【讨论】:
如果文本字段为空并且用户按下了反斜杠,则不会调用此方法。 Dimme,当文本为空并按下反斜杠时,这仍然不起作用。您的 UITextFieldTextDidChangeNotification 解决方案与委托的 textField:shouldChangeCharactersInRange:replacementString 有何不同?不是,他们都做同样的事情!这不能拦截每个退格键以上是关于UITextField - 检测内置 iPhone 键盘上的输入?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 iPhone 中 UITextField 的颜色?
iPhone——获取 UITextField 调整后的字体大小
iPad 和 iPhone 中的 UITextField 键盘类型