假设我有以下代码:
IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;
我希望用户一按下任何键,greetingLabel
就会显示"Hello nameTextField“。
我基本上需要的是Cocoa委托方法controlTextDidChange
的iPhone等效项。
每次击键时都会调用textField:shouldChangeCharactersInRange:
委托方法:
- (BOOL) textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
字符串参数返回按下的字符。但是,实际textField
的值(nameTextField.text
)仍然为空。
这里我漏掉了什么?(我希望nameTextField
能够准确反映用户到目前为止输入的字符串)。
发布于 2008-12-23 08:19:22
您可以在文本字段中为事件UIControlEventEditingChanges注册一个操作:
[nameTextField addTarget:self action:@selector(updateLabelUsingContentsOfTextField:) forControlEvents:UIControlEventEditingChanged];
..。
// TODO: error checking
- (void)updateLabelUsingContentsOfTextField:(id)sender {
greetingLabel.text = [NSString stringWithFormat:@"Hello %@", ((UITextField *)sender).text];
}
发布于 2008-12-23 09:34:32
UITextField
有一个通知UITextFieldTextDidChange
,如果你注册了它,它将在每次文本更改时触发。只需注册该通知,并在通知调用的方法中更改标签的文本。
除此之外,传递给通知处理程序的对象将包含UITextField
的文本。
希望这能有所帮助。
https://stackoverflow.com/questions/388237
复制相似问题