Apple のネイティブ メッセージ アプリのように、常にキーボードの上にあるツールバーを作成しようとしています。iPad でそのアプリを詳しく見る場合は、キーボードのドッキングを解除し、右下のボタンを押したままドラッグしてみてください。Apple のツールバーがキーボードの位置を非常にうまく追跡していることに気付くでしょう。
その動作を再現しようとして、keyboard-will-change-frame 通知と keyboard-did-change-frame 通知の両方を購読しました。しかし、残念なことに、最初の通知はユーザーがドラッグを開始したときに送信され、後者はキーボードが最終的な位置にスナップしたときに送信されましたが、その間に送信された通知はありませんでした。何か不足していますか?これが私が話していることです:
これは、通知をサブスクライブするために使用するコードです。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidChangeFrame:) name:UIKeyboardDidChangeFrameNotification object:nil];
これらは私のリスナー関数です:
- (void)keyboardWillChangeFrame:(NSNotification *)notification{
NSLog(@"will change");
// [self alignToolbarForKeyboard:notification action:@"will_change_frame"];
}
- (void)keyboardDidChangeFrame:(NSNotification *)notification{
NSLog(@"did change");
// [self alignToolbarForKeyboard:notification action:@"did_change_frame"];
}
両方のリスナー関数の呼び出しをコメントアウトして、何もブロックしていないことを確認しました。知らない通知タイプはありますか? 私は UIWindow リファレンスを見ましたが、既に持っている以上のものは見つかりませんでした。念のため、移動中に表示/非表示の通知が送信されるかどうかも確認しました。そうではありません。
何か案は?ありがとう!