2012-04-11 15 views
3

以下のメソッドでsubstringWithRange:rangeの例外が発生します。例外の取得 'NSRangeException'

編集が無効のテキストビューがあります。

私はテキストフィールドのみをテキスト選択に使用しています。 私はfirs時間例外なく、私が2回目にそれをスルーするときにテキストを選択しています。

例外: '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

関連する問題