2012-04-19 1 views
0

iPadのスプリットキーボード用のフレームで遊んでいます。スプリットキーボードの動き検出

スプリットキーボードが表示または非表示になると、UIKeyboardWillChangeFrameがトリガーされるようです。

ドッキングモードでは、UIKeyboardWillShowUIKeyboardWillHideの通知がトリガーされます。

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,0,0)となります。convertFrameを使用してフレームを変換した後、(0、-124,0,0) 他のすべてのケースでは、エンドフレームがフレーム上に正しい座標を提供しているように見えます。これを詳細化する –

+0

キーボードを画面上に移動するたびに、通知オブジェクト内のエンドフレームは(0,0,0,0)となります。この行のコードをいくつか入れてください。 –

答えて

0

まだこの問題が発生しているかどうかはわかりませんが、通知がありません。キーボードの使用が開始されると、UIKeyboardWillChangeFrameが送信されます。ただし、この時点では、ユーザーがキーボードの移動を停止していないため、通知でエンドフレームを取得することはできません。ユーザーがキーボードの移動を停止すると、別の通知:UIKeyboardDidChangeFrameNotificationが送信されます(少なくとも5.1になります)。その通知で正しいエンドフレームを取得できるはずです。

関連する問題