2015-12-10 12 views
13

キーボードを処理するのにUIKeyboardWillShowNotificationUIKeyboardWillHideNotificationを使用しています。
これは、キーボードが表示されたときに呼び出される関数である:UIKeyboardWillShow迅速なキーボードの不適切なフレームを返します。

​​

IはkeyboardBounds =(0、524、320、44)を取得し、私は5秒を使用しています。理由は分かりませんorigin.yは524(300に近いところにあるはずです)と高さ44! 私もコメント行を試しました。両方の方法でキーボードの境界がになります。この問題は、即時のキーボードの場合のみとなります。 this issue

+0

競合状態に見えます。 'UIKeyboardDidShowNotification'を使用するときも同じ問題がありますか? –

+0

@FabioPoloni:はい。 – Nitish

+0

'UIKeyboardDidChangeFrameNotification'でリッスンして、フレームを保存し続けますか? –

答えて

2

さて問題は迅速キーボードで、方法-(void) keyboardWillShow:(NSNotification *)noteを3回と呼ばれ、それは、3つの異なるorigin.y値及び高さ最初に返すたびに、それが(0、524、320 keyboardBoundsの=を与えるされるのと同じ
、44)、2回目はkeyboardBounds =(0,308,320,260)、3回目はkeyboardBounds =(0,271,320,297)を返します。

サードパーティ製のキーボードサイズは固定されていないため、ビューのレイアウト方法に応じてサイズが固定されるため、オートレイアウトの場合(viewDidLoad、viewWillAppear viewWillLayout、viewDidLayout、viewDidAppearのように、 viewDidAppearまたはviewDidLayout、Viewがレイアウトされている場所)。ここでは、ビューが完全にレイアウトされたときの正確なフレームを取得します。

+0

'UIKeyboard'には開かれたレイアウトイベントがありません。 – ShahiM

+0

スウィフトキーボードはカスタムキーボードで、イベントがあります。コメントをする前に質問を慎重にお読みください –

+0

iOS 11で正しくない高さの問題が発生した場合は、https://stackoverflow.com/a/46273070/2764966を参照してください。 – ViruMax

0

UIKeyboardDidShowNotificationUIKeyboardDidChangeFrameNotificationのような他の通知を試すこともできます。 UIKeyboardWillShowNotification

ちょうどあなたに指示するキーボードを教えてください、正確には、キーボードに表示されたフレームを正確に伝えることはできません。

関連する問題