5

UITextViewどの特定のキャラクターがタップされたかを特定しようとしています。characterRangeAtPoint:メソッドを使ってみました。UITextViewしかし、 I タップのどこにいても、常に nil を返します。次のコードを書いて実行しました。

for (int x = 0; x<1000; x++) {
    pos.x = x;
    for (int y = 0; y<1000; y++) {
        pos.y = y;
        UITextRange * range = [textView characterRangeAtPoint:pos];
        if (range!=nil) {
            NSLog(@"x: %f, y: %f", pos.x, pos.y);
        }
    }
}

まあ、それは文字列に到達することはありませんNSLog。私は何を間違っていますか?

4

4 に答える 4

5

UITextView は選択可能でなければなりません。ストーリーボードで、「選択可能」チェックボックスをオンにします。

コードでは、

textView.selectable = YES;

これは-closestPositionToPoint:、UITextView のメソッドにも必要です。

于 2014-03-10T19:39:40.047 に答える
0

TextView はユーザー編集可能ですか? はいの場合は、その方法を試してくださいtexViewDidChangeSelection。textView でキャレット (カーソル) が移動するたびに呼び出されます。textView.selectedRange.location次に、キャレットのインデックスを指すことでカーソル位置を取得します。

ここでの私の仮定は、2D での座標ではなく、文字数に対する文字の位置が必要であるということです。

于 2013-09-21T06:03:16.423 に答える
0

characterRangeAtPoint の代わりに shouldChangeCharactersInRange メソッドを使用します。

そして、ループ文の代わりに If 条件を使用します。

于 2013-09-21T05:57:47.560 に答える