ios - 识别 UITextField 或 UITextView 中删除的字符

标签 ios

我需要识别被删除的字符。例如,当我删除一个字符“@”时,我需要执行一些操作。有什么简单的方法可以做到这一点?还是我需要将最近输入的字符保存在变量中并检查 shouldChangeCharactersInRange 中的 range.length == 0?

提前致谢。

最佳答案

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

- (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 delegate 中。每次用户更改 UITextField 中的文本、删除、替换或附加字符时,文本字段都会发送此消息

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

委托(delegate)。在这种方法中,我检查替换文本中是否包含 @ 符号,以及它是否包含在替换文本中。

关于ios - 识别 UITextField 或 UITextView 中删除的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048819/

相关文章:

ios - 如何从 iOS 上的硬件键盘检测按键向上/按键按下事件?

iphone - 在其他 View Controller 下面创建一个 View Controller

iphone - 将 GMT 时间转换为本地时间

ios - 如何快速添加从我的 appdelegate 类调用的弹出窗口?

ios - 如何在 FSCalendar 中获取月份

objective-c - 将像素点转换为经纬度

ios - Swift 主从模板应用之谜

ios - Xcode 上的 Swift - 具有多个值的数组索引

iphone - iOS iPhone 是否可以克隆 UIView 并将其自身绘制到两个 UIView 上?

ios - swift 5.1 : How can I pass NULL as an argument?