我正在尝试创建一个始终位于键盘上方的工具栏,就像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参考,但找不到我已有的东西。为了确保,我还检查了在移动过程中是否发送了显示/隐藏通知。他们不是。
有什么想法吗?谢谢!