3

我创建了一个UITextView允许在用户键入时进行动态标记的@.

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

4

2 回答 2

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这应该有效。

于 2012-08-22T03:05:28.423 回答
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");
}

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

希望有帮助!

于 2012-11-04T15:52:24.657 回答