iPadのスプリットキーボード用のフレームで遊んでいます。スプリットキーボードの動き検出
スプリットキーボードが表示または非表示になると、UIKeyboardWillChangeFrame
がトリガーされるようです。
ドッキングモードでは、UIKeyboardWillShow
とUIKeyboardWillHide
の通知がトリガーされます。
NSNotificationオブジェクトでは、ドッキングモードとスプリットモードの両方に対応するキーボードのフレームを取得できます。
私たちは分割キーボードを画面上のに移動すると本当の楽しみが始まります。画面上でキーボードを動かすたびに、通知オブジェクト内のエンドフレームは(0,0,0,0)となります。私はconvertFrame
座標を使用してフレームを変換した後、(0,-124,0,0)
に変更します。これは、UPまたはDOWN方向のキーボードの動きに当てはまります。
他のすべてのケースでは、エンドフレームはフレーム上に正しい座標を提供しているようです。
このコードは正確なフレームをポイントで示しています。
CGRect startFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
このendframeは、ユーザが画面上のスプリットキーボードを移動したときに(0,0,0,0)です。
CGRect convertedStartFrame = [self.view.window convertRect:startFrame toView:self.view];
CGRect convertedEndFrame = [self.view.window convertRect:endFrame toView:self.view];
This convertedEndFrame = (0,-124,0,0) when endFrame = (0,0,0,0).
もう一つ、私はコードを経由して、キーボードを移動していないです。今現在のビューに応じた正確な座標を取得するために
。
これはAppleの既知のバグであるか、何か不足している場合、私は本当にわかりません。
うまくいけば、私に何かを指摘できます。
ありがとうございました。
コードを入れてください。もっと深く理解できます。 –
"私はキーボードを画面上に移動するたびに、通知オブジェクト内のエンドフレームは(0,0,0,0)となります。convertFrameを使用してフレームを変換した後、(0、-124,0,0) 他のすべてのケースでは、エンドフレームがフレーム上に正しい座標を提供しているように見えます。これを詳細化する –
キーボードを画面上に移動するたびに、通知オブジェクト内のエンドフレームは(0,0,0,0)となります。この行のコードをいくつか入れてください。 –