我正在使用文本字段委托方法“shouldChangeCharactersInRange”,我想知道是否有任何方法可以判断用户是删除字符还是键入字符?谁知道? 感谢。
答案 0 :(得分:26)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.length > 0)
{
// We're deleting
}
else
{
// We're adding
}
}
答案 1 :(得分:5)
<强>逻辑:强> 要查找删除,您需要在每个字母类型后构建一个字符串,然后您可以检查每个更改,如果字符串是buid字符串的子字符串然后它意味着用户删除最后一个字母,如果构建字符串是textField文本的子字符串然后用户添加一封信。
您可以使用与此逻辑一起使用的委托方法,也可以使用通知
您可以使用此通知查找任何类型的更改
在viewDidLoad
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
selector:@selector (handle_TextFieldTextChanged:)
name:UITextFieldTextDidChangeNotification
object:yourTextField];
并制作此功能
- (void) handle_TextFieldTextChanged:(id)notification {
//you can implement logic here.
if([yourTextField.text isEqulatToString:@""])
{
//your code
}
}
答案 2 :(得分:1)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
if (newLength > [textField.text length])
// Characters added
else
// Characters deleted
return YES;
}