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

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

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

提前非常感谢!

【问题讨论】:

    标签: iphone ios keyboard uitextfield


    【解决方案1】:

    使用NSNotificationCenter 并查看UITextFieldTextDidChangeNotification

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

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

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

    【讨论】:

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

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

    【讨论】:

    • 如果文本字段为空并且用户按下了反斜杠,则不会调用此方法。
    • Dimme,当文本为空并按下反斜杠时,这仍然不起作用。您的 UITextFieldTextDidChangeNotification 解决方案与委托的 textField:shouldChangeCharactersInRange:replacementString 有何不同?不是,他们都做同样的事情!这不能拦截每个退格键
    猜你喜欢
    • 2011-02-14
    • 2014-04-18
    • 2011-01-26
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多