我正在尝试制作一个始终位于键盘上方的工具栏,就像在 Apple 的原生消息应用程序中一样。如果您仔细查看 iPad 上的该应用程序,请尝试通过按住右下角的按钮来取消键盘并拖动它。您会注意到 Apple 的工具栏可以很好地跟踪键盘的位置。
为了复制这种行为,我订阅了键盘将更改框架和键盘进行更改框架通知。然而,令我失望的是,我发现第一个是在用户开始拖动时发送的,而后者是在键盘捕捉到其最终位置时发送的,但是我找不到在两者之间发送的通知。我错过了什么吗?这就是我所说的:
这是我用来订阅通知的代码:
[[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 参考,但除了我已经拥有的之外找不到任何东西。为了确保,我还检查了在移动过程中是否发送了显示/隐藏通知。他们不是。
有任何想法吗?谢谢!