0

iPad で Split Keyboard のフレームをいじっています。

まあ、UIKeyboardWillChangeFrame分割キーボードが表示または非表示になるたびにトリガーされるようです。

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

NSNotification オブジェクトでは、ドッキング モードと分割モードの両方に当てはまるキーボードのフレームを取得できます。

画面上で分割キーボードを動かすと、本当の楽しみが始まります。画面上でキーボードを動かすたびに、通知オブジェクトの endframe は (0,0,0,0) になります。convertFrame座標を使用してフレームを変換すると、 に変わります(0,-124,0,0)。これは、上方向または下方向のキーボードの動きに当てはまります。

他のすべてのケースでは、エンドフレームはフレーム上で正しい座標を提供しているようです。

このコードは、ポイント単位で正確なフレームを提供します。

CGRect startFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];

CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

ユーザーが画面上で分割キーボードを動かすと、このエンドフレームは (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).

もう1つ、コードを介してキーボードを移動していません。

これが Apple の既知のバグなのか、それとも私が何かを見逃しているのか、よくわかりません。

うまくいけば、誰かが私に物事を指摘することができます.

ありがとう。

4

2 に答える 2

0

それを考えてSimple Gistの例を書きます

于 2013-07-10T09:24:11.347 に答える
0

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

于 2012-05-16T17:31:39.430 に答える