Objective c UIKeyboardWillChangeFrame移动未固定键盘时未发送通知

Objective c UIKeyboardWillChangeFrame移动未固定键盘时未发送通知,objective-c,ipad,uikeyboard,Objective C,Ipad,Uikeyboard,我正在尝试制作一个始终位于键盘上方的工具栏,非常像苹果的原生消息应用程序。如果你仔细观察iPad上的应用程序,试着松开键盘,按住右下角的than按钮拖动键盘。你会注意到苹果的工具栏很好地跟踪了键盘的位置 尝试复制该行为时,我同时订阅了键盘将更改帧和键盘确实更改帧通知。然而,令我失望的是,我发现第一个是在用户开始拖动时发送的,后一个是在键盘捕捉到其最终位置时发送的,但我找不到中间发送的通知。我错过什么了吗?下面是我要说的: 这是我用来订阅通知的代码: [[NSNotificationCenter

我正在尝试制作一个始终位于键盘上方的工具栏,非常像苹果的原生消息应用程序。如果你仔细观察iPad上的应用程序,试着松开键盘,按住右下角的than按钮拖动键盘。你会注意到苹果的工具栏很好地跟踪了键盘的位置

尝试复制该行为时,我同时订阅了键盘将更改帧和键盘确实更改帧通知。然而,令我失望的是,我发现第一个是在用户开始拖动时发送的,后一个是在键盘捕捉到其最终位置时发送的,但我找不到中间发送的通知。我错过什么了吗?下面是我要说的:

这是我用来订阅通知的代码:

[[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参考资料,但除了我已经拥有的以外,找不到任何东西。为了确保这一点,我还检查了在移动过程中是否发送了显示/隐藏通知。他们不是


有什么想法吗?谢谢

工具栏是否可能是一个
inputAccessoryView
?这可能比跟踪键盘边框的变化要容易得多。我会再试一次,但在我以前的尝试中,工具栏会被键盘隐藏,但我更喜欢让它始终可见。不过,也许我会找到一种使用输入附件视图的方法。我猜你需要特别处理键盘被丢弃的情况,所以你可以在底部显示工具栏。但至少你可以处理那个事件。@arik那么你有什么进展吗?:)是的,或多或少。我的解决方案是创建两个相同的工具栏,并将其中一个作为另一个文本字段的输入附件视图。然后,根据键盘是否显示,我会显示或隐藏另一个工具栏,它不是输入附件视图。