2012-04-11 64 views
3

我收到substringWithRange的异常:范围在下面的方法。获取异常'NSRangeException'

我正在禁用编辑的textview。

我正在使用textfield仅用于文本选择。 当我选择第一次的文本没有例外,但当我第二次按它通过。

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

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

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

回答

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]; 
} 
+0

谢谢.........现在它工作......没有例外...更多... – iosDev 2012-04-11 12:50:26