Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UITextField或UITextView中标识已删除的字符_Ios - Fatal编程技术网

Ios 在UITextField或UITextView中标识已删除的字符

Ios 在UITextField或UITextView中标识已删除的字符,ios,Ios,我需要识别删除的字符。例如,当我删除字符“@”时,我需要执行一些操作。有什么简单的方法可以做到这一点吗?或者我是否需要将最近键入的字符保留在变量中,并在shouldChangeCharactersRange中检查range.length==0 提前谢谢 是的,正如您所说,您必须将最后一组字符保留在NSString中,然后在文本更改时将其与新字符串进行比较在我看来,应该是这样的: - (BOOL)textField:(UITextField *)textField shouldChangeChar

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


提前谢谢

是的,正如您所说,您必须将最后一组字符保留在NSString中,然后在文本更改时将其与新字符串进行比较

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

- (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中的文本、删除、替换或显示字符时,textfield都会发送此消息

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
委派。在这个方法中,我检查@符号是否包含在替换文本中,以及它是否包含在替换文本中

通过这种方式,您可以在swift中执行此操作,您将被删除字符


让strDeletedChar=(textView.text作为NSString)。substringWithRange(range)

您可以在UITextView委托的方法中捕获deletede字符:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
   NSString *deletedChar = [textView.text substringWithRange:range];
   if ([deletedChar isEqualToString:@"@"]) {
       // do something
       return YES;
   }else{
    // do something
    return YES;
   }
}

UITextView委托Swift 5版本:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {

    guard let txt = textView.text, let txtRange = Range(range, in: txt) else {
        return false
    }
    let subString: Substring = txt[txtRange]
    if  subString == "(searchString)" {
        // do something
        return true
    }
}

嗨,你能解释一下上面的代码是做什么的吗?“userDidRemoveAtSign”方法是什么?这不是自定义方法吗?