3

独自の UITextInput を実装しようとしていますが、Bluetooth キーボードのカーソル キーを使用して位置を更新するのに問題があります。文字が次のように番号付けされていると想像すると、ループする TextInput を作成しようとしています。

1 2 3
4 5 6
7 8 9

次に、位置 2 を上に押すと、位置 8 に移動します (6 を左に押すと、位置 4 に移動します)。iOS は positionFromPosition:inDirection:offset: を呼び出して、現在の位置からどこに移動するかを把握しているようです。次に setSelectedTextRange: を呼び出してカーソル位置を更新します。

これは今のところ問題ありませんが、iOS が positionFromPosition:inDirection:offset: を呼び出さないことがあるようです。私はこれを理解していません.選択した位置が変更され、キャッシュをクリアする必要があることをiOSに伝える方法はありますか?つまり、誰かが「クリア」ボタンなどを押した場合?

キャッシングは上下のカーソルキーを押した場合にのみ発生するようで、左右に移動しても以前の値はキャッシュされず、positionFromPosition:inDirection:offset: が常に呼び出されます。何かがカーソル位置をリセットする可能性を考慮していなくても、「positionFromPosition:inDirection:offset:」が時々呼び出されないという問題があり、iOS によって「setSelectedTextRange:」が同じ値に設定され続けます。だから、iOSがカーソルの動きをキャッシュする方法について私が誤解しているものがあるように感じたら. 誰でも私を助けることができますか?

4

0 に答える 0