如何为UITextField获取textDidChange(比如UISearchBar)方法?

Jon*_*nah 14 iphone uitextfield

如何获取UITextField的textDidChange方法?每次对文本字段进行更改时,我都需要调用方法.这可能吗?谢谢!

Chr*_*ong 47

UITextFieldTextDidChangeNotification只要文本字段发生更改,您就可以使用它来调用方法.将此添加到您的init:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:UITextFieldTextDidChangeNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

  • 与Ben的答案相比,这种方法的优势在于*在文本更改后可以通知*.如果你使用`shouldChangeCharactersInRange`,你必须尝试计算一旦允许编辑后字符串的外观. (4认同)

Ben*_*ieb 20

您可以设置委托并使用

- (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) string;
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个好方法.此方法在文本更改之前触发,因此您正在查看的文本不是用户刚刚键入的内容,并且将replacementString附加到现有文本也不正确,因为用户可能正在将文本插入前一个字符串的中间,或完全替换它(这就是为什么有一个范围参数).让自己头疼,并在下面使用Chris的解决方案. (9认同)
  • 谢谢!这非常有效.我必须执行以下操作才能获得完整的字符串:NSMutableString*textFieldString = [NSMutableString stringWithString:textField.text]; [textFieldString appendString:string]; (3认同)