获取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
的文本。
希望有所帮助。