我需要识别被删除的字符。例如,当我删除一个字符"@“时,我需要执行一些操作。有什么简单的方法可以做到这一点吗?或者,我是否需要将最近键入的字符保存在一个变量中,并在shouldChangeCharactersInRange中检查range.length == 0?
提前谢谢。
发布于 2012-06-15 18:50:29
在我看来,应该是这样的:
- (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;
}
说明:是的,当用户删除'@‘符号时,userDidRemoveAtSign
是你的自定义方法。此代码驻留在UITextField 委托中。每次用户在UITextField中更改文本、删除、替换或附加字符时,文本字段都会发送此消息
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
委派。在这个方法中,我检查@ sign是否包含在替换文本中,以及它是否包含在替换文本中。
发布于 2012-06-15 18:30:49
是的,正如您所说,您必须将最后一组字符保留在NSString中,然后当文本更改时,将其与新字符串进行比较
发布于 2016-04-14 14:04:39
你可以在swift中这样做,这样你会得到删除的字符
让strDeletedChar = (textView.text as NSString).substringWithRange(范围)
https://stackoverflow.com/questions/11048819
复制相似问题