ios - 在输入击键时获取 UITextField 的值?

假设我有以下代码:

IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;

我希望 greetingLabel 在用户按下任意键后立即读取“Hello [nameTextField]”。

我需要的基本上是 Cocoa 委托(delegate)方法 controlTextDidChange 的 iPhone 等价物。

每次击键时都会调用textField:shouldChangeCharactersInRange:委托(delegate)方法:

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

字符串参数返回被按下的字符。然而,实际 textField 的值 (nameTextField.text) 仍为空白。

我在这里缺少什么? (我希望 nameTextField 反射(reflect)用户到目前为止输入的确切字符串)。

最佳答案

事实证明,最简单的方法是使用 Interface Builder:

  • 添加一个 IBAction(例如,在本例中添加到 ViewController)
  • 在 Interface Builder 中的 UITextField 上按住 Ctrl 键并单击(或右键单击)
  • 将“Editing Changed”事件连接到第一步添加的 File's Owner's IBAction。

像魅力一样工作:)(我不敢相信我在这上面花了很多天,现在才意识到解决方案比我想象的要简单得多:P)

https://stackoverflow.com/questions/388237/

相关文章:

objective-c - 如何为多个子类使用单个 Storyboard uiviewcontrol

objective-c - 在 Objective-C 中获取对象属性列表

iphone - 如何制作 URL/电话可点击的 UILabel?

objective-c - 如何增加 NSNumber

objective-c - 有条件地从 AppDelegate Storyboard中的不同位置开始

objective-c - 使用 BOOL 属性

ios - NSAttributedString 添加文本对齐

objective-c - 将 NSURL 转换为本地文件路径

iphone - UILabel 不会自动缩小文本以适应标签大小

objective-c - 检查方法是否存在