UITextInput
CoreText を使用し、プロトコルに準拠するカスタム UITextView (EGOTextView に基づく) を実装しています。1つの厄介なことを除いて、ほとんどすべてが正常に機能しています(うわー!)。オートコレクトの提案テキストは垂直方向にミラーリングされ、そのハイライトはわずかに右に移動します。外観は次のとおりです。
テキスト フィールドに「helo」と入力すると、「help」に自動修正されます。ご覧のとおり、オートコレクト テキストは垂直方向にミラーリングされていますが、その背景はミラーリングされていません。また、水平方向に右に ~7pt オフセットされています。
2 番目の問題 (水平オフセット) に対処するために、firstRectForRange:
メソッドが正しい を返すことを確認しましたCGRect
。私はこれを2つの方法で行いました。UIMenuController
最初は、 a を表示すると正しい場所に表示されることを視覚的に確認することでした(表示されます)。CGRect
2 つ目は、返された byの周りに輪郭を描くことfirstRectForRange:
です。CGRect
これは、アウトライン化された同じテキストです。
ご覧のとおり、正しい領域の輪郭が描かれていますが、オートコレクトは間違ってマーク/強調表示されています。
どんなコードでも喜んで共有しますが、それは巨大なクラスであり、今ではかなり困惑しています。どんなポインタでも大歓迎です!
編集:ソース コードは、このリポジトリの Experimental ブランチで入手できます: github.com/cbrauchli/EGOTextView。