2

私はUITextFieldを追加したUIView Subclassを持っています。私はViewControllerのトップビューとしてこのビューを設定しました。 UIViewSubclassでは、私はカスタムキーボードを提供するためにinputViewController getterをオーバーライドしました。superviewのinputViewControllerは、サブビュー(UITextView)でタップすると呼び出されます

UITextFieldを選択すると、becomeFirstResponderUITextFieldが呼び出され、それに関連付けられたキーボードが表示されます。 しかし、これとは別に、私のUIView SubclassinputViewControllerメソッドも呼び出され、テキストフィールドとUIViewの入力ビューが重なり合って表示されています。私もUIView's subclassに電話しているcanBecomeFirstResponderまたはbecomeFirstResponderが表示されません。 inputViewControllerメソッドが呼び出され、カスタムキーボードが表示されます。

最初のレスポンダになっていなくても、なぜinputViewControllerが私のUIView's subclassに呼ばれているのか分かりません。アップルのドキュメントから

UPDATE - 「入力ビューは、テキストビューまたはカスタムビューのinputViewプロパティに割り当てられているシステムのキーボードの代用で入力ビューがある場合は、UIKitには、スワップアウトすることがあります。テキストオブジェクトが最初のレスポンダであっても、キーボード以外のオブジェクトに対するキーボードのような入力ビューを開発者に代わって表示する可能性があります。

これを正しく理解すれば、UIResponderがUIViewサブクラスでinputViewControllerを呼び出すのは理にかなっていますが、理想的にはinputViewControllerでテキストフィールドのキーボードをスワップアウトする必要がありますか?明らかにそれはここで起こっていない。

+0

あなたはこれに解決策を見つけましたか? – aunindo

答えて

0

inputViewControllerをオーバーライドするために特にUIViewサブクラスを使用していますか?代わりにそれをやろうとする代わりに、代わりにUITextFieldをサブクラス化し、UITextFieldサブクラスでinputViewControllerをオーバーライドしてください。

+0

最初の応答者になるためにUIViewが必要な場合があり、最初のレスポンダになると独自のカスタムキーボードがあります。私はUITextfieldをサブクラス化することでこれを達成できません。 – user2990765

関連する問題