识别UITextField或UITextView中的已删除字符

sre*_*dev 2 ios

我需要识别已删除的字符.例如,当我删除一个字符"@"时,我需要执行一些操作.有没有简单的方法来做到这一点?或者我是否需要将最近输入的字符保留在变量中并检查shouldChangeCharactersInRange中的range.length == 0?

提前致谢.

Ole*_*man 5

在我看来,它应该是这样的:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *textToChange  = [[textField text] substringWithRange:range];
    NSRange rangeOld = [textToChange rangeOfString:@"@"];
    NSRange rangeNew = [string rangeOfString:@"@"];
    if (rangeOld.location != NSNotFound && rangeNew.location == NSNotFound ) {
        [self userDidRemoveAtSign];
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

说明:userDidRemoveAtSign是的,当用户删除"@"符号时,是您的自定义方法.此代码驻留在UITextField 委托中.每次用户更改UITextField中的文本,删除,替换或附加字符时,textfield都会发送此消息

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

委托.在这个方法中,我检查替换文本中是否包含@符号,以及是否包含在替换文本中.