获取UITextField的值作为按键input?

假设我有以下代码:

IBOutlet UITextField* nameTextField; IBOutlet UILabel* greetingLabel; 

我希望greetingLabel只要用户按任意键就可以读取“Hello [nameTextField]”。

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

textField:shouldChangeCharactersInRange:每次发生击键时调用委托方法:

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

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

我在这里错过了什么? (我想nameTextField来反映到目前为止,用户input的确切string)。

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

  • 添加一个IBAction(对于ViewController来说,就像在这种情况下一样)
  • 在界面生成器中的UITextField上单击(或右键单击)
  • 将“Editing Changed”事件连接到第一步中添加的文件所有者的IBAction。

工作就像一个魅力:)(我不敢相信我花了很多日子,现在认识到解决scheme比我想象的简单得多:P)

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

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

 // TODO: error checking - (void)updateLabelUsingContentsOfTextField:(id)sender { greetingLabel.text = [NSString stringWithFormat:@"Hello %@", ((UITextField *)sender).text]; } 

UITextField有一个通知UITextFieldTextDidChange ,如果你注册的话每次文本改变都会被触发。 只需注册该通知和通知所调用的方法,即可更改标签的文本。

为了增加这一点,传递给你的通知处理程序的对象将具有UITextField的文本。

希望有所帮助。