3

以下のメソッドでsubstringWithRange:rangeの例外が発生しています。

編集を無効にしてテキストビューを表示しています。

テキスト選択にのみテキストフィールドを使用しています。私が最初の時間にテキストを選択しているときも例外ではありませんが、2回目に押すとそれは通り抜けます。

例外:'NSRangeException'、理由:' * -[NSCFString substringWithRange:]:範囲またはインデックスが範囲外です'。

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

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

1 に答える 1

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];
}
于 2012-04-11T12:40:26.423 に答える