输入击键时如何获取UITextField的值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

假设我有以下代码:

IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;

我希望greetingLabel在用户按任意键时尽快阅读“Hello [nameTextField]”。

我基本需要的是Cocoa委托方法的iPhone等价物controlTextDidChange

textField:shouldChangeCharactersInRange:委托方法被称为每个键击发生时:

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

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

我在这里错过了什么?(我想nameTextField反映用户输入的确切字符串)。

提问于
用户回答回答于

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

  • 添加IBAction(例如,在ViewController中添加一个IBAction)
  • Ctrl-在InterfaceBuilder中单击UITextField(或右击)
  • 将“编辑更改”事件连接到第一步中添加的文件所有者的IBAction。

用户回答回答于

可以在文本字段上为事件UIControlEventEditingChanges注册一个操作:

[nameTextField addTarget:self action:@selector(updateLabelUsingContentsOfTextField:) forControlEvents:UIControlEventEditingChanged];

...

// TODO: error checking

- (void)updateLabelUsingContentsOfTextField:(id)sender {

    greetingLabel.text = [NSString stringWithFormat:@"Hello %@", ((UITextField *)sender).text];

}

扫码关注云+社区