9

我正在使用文本字段委托方法“shouldChangeCharactersInRange”,我想知道是否有任何方法可以判断用户是在删除字符还是在输入字符?有人知道吗?谢谢。

4

3 回答 3

28
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (range.length > 0)
    {
         // We're deleting
    }
    else
    {
        // We're adding
    }
}
于 2011-03-04T06:14:07.757 回答
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
    }

}
于 2011-03-04T05:44:20.987 回答
2
- (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;
}
于 2011-03-04T06:08:35.397 回答