0

我基于 UITextView 实现了一个自定义的 textview,试图监听文本更改事件。所以我实现了 UITextView 的委托:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    //It crashes!
    NSString *result = [textView.text stringByReplacingCharactersInRange:range withString:text];

    return YES;
}

在 iOS 5 和 iOS 6 中,上面的代码可以正常工作。但在 iOS 4.3 中,它会崩溃并出现异常***-[NSCFString replaceCharactersInRange:withString:]: Range or index out of bounds。我打印了在 iOS 4.3 中找到的所有变量值,有时范围确实超出了范围:textView.text.length是 111,但rangeis 113,0. 我的代码有什么问题?谢谢!

4

1 回答 1

0

每当在 textview 中进行更改时,都会自动调用此方法,并且非常稳定。我的猜测(正如您在上面的评论中确认的那样)是您必须在代码中手动调用此方法,并提供不正确的范围。

于 2013-02-04T15:15:41.230 回答