获取异常'NSRangeException'

时间:2012-04-11 10:30:38

标签: uitextview nsexception

我在substringWithRange:下面的方法中得到了Exception。

我正在禁用编辑的textview。

我仅使用文本字段进行文本选择。 当我为第一次选择文本时也不例外,但是当我第二次按下它时,它就已经完成了。

例外: 'NSRangeException',原因:' * - [NSCFString substringWithRange:]:范围或索引越界'。

- (void)textViewDidChangeSelection:(UITextView *)textView {

NSRange range = [tv selectedRange];
str = [tv.text substringWithRange:range];
}

1 个答案:

答案 0 :(得分:2)

我检查了你的例子。有时您会检索未定义的范围,如(2147483647,0)。所以,检查它以避免崩溃:

- (void)textViewDidChangeSelection:(UITextView *)textView {
    NSRange range = [textView selectedRange];
    if(range.length == 0 || range.location > textView.text.length)
        return;

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