UITextView检测字符已删除

时间:2012-08-22 02:39:30

标签: iphone objective-c ios xcode uitextview

我创建了一个UITextView,允许在用户输入@时进行动态标记。

是否可以检测到@被删除,以便停止我创建的特定标记过程?如果是这样,我该怎么做? UITextView没有这样的委托方法。

2 个答案:

答案 0 :(得分:1)

我会用

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

然后创建一个NSString,您可以在其中存储添加到UITextView的最后一个字符。在上述方法中,添加以下代码段。

if ([text isEqualToString:@""] && [lastRecordedString isEqualToString@"@"]) {
  //do whatever you want to do when an @ is deleted
}

lastRecordedString = [textView.text substringFromIndex:[string length]-1];

编辑:请参阅上面编辑的代码。现在lastRecordedString是删除字符后UITextView中的最后一个字符。这应该有用。

答案 1 :(得分:1)

您可以使用以下内容获取原始文本:

NSString *originalText = [textView.text substringWithRange:range];

中的

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

方法

然后,做

if ([originalText rangeOfString:@"tag"].length > 0) {
    NSLog(@"delete tag string");
}

您将检测用户是否删除了特定字符串。

希望有帮助!