如何检测国际键盘的隐藏事件?iOS

4
如何检测国际键盘的隐藏事件? UIKeyboardDidHideNotification 似乎没有触发。
以下相关链接没有帮助。 检测国际键盘的出现和消失 更多信息: 这是我设置通知的方法,包括 UIKeyboardDidHideNotificationUIKeyboardDidShowNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

-(void)keyboardDidShow:(NSNotification*)notification {
    NSLog(@"keyboardDidShow");
}
-(void)keyboardDidHide:(NSNotification*)notification {
    NSLog(@"keyboardDidHide");
}

keyboardDidShow触发两次。第一次是标准键盘弹出时。第二次是国际键盘弹出时。

keyboardDidHide当我隐藏国际键盘时不会被触发。但当标准键盘被隐藏时,它会被触发。

我有什么遗漏吗?


UIKeyboardWillHideNotification 一样吗?你是怎么设置你的通知的? - Kjuly
看起来没问题,你可以尝试使用 UIKeyboardWillHideNotification 而不是 UIKeyboardDidHideNotification - Kjuly
是的,我已经尝试过了。UIKeyboardWillHideNotification不起作用。但显然有一种方法可以做到这一点,因为所有主要的消息应用程序都能够检测到这一点,即当国际键盘触发时调整可见区域。只是不确定他们是怎么做到的。 - ngzhongcai
2
请查看此链接。主要思路是使用UIKeyboardDidChangeFrameNotification在键盘框架变化时调整您的用户界面。 - Sergiy Salyuk
谢谢!这是正确的句柄。一直在找这个。你想把它重新发布为答案吗? - ngzhongcai
1个回答

0

如果用户更改键盘,您将不会收到任何通知。只有当键盘出现或消失时才会收到通知。

我所知道的唯一解决方案是观察或响应更改(尝试使用KVO?)

[UITextInputMode currentInputMode].primaryLanguage

另见:检测当前 iPhone 输入语言


currentInputMode在iOS 7中已弃用。 - pickwick
有一个未记录的通知 UIKeyboardLayoutDidChangedNotification(拼写错误)可能值得您尝试监听。 - Cocoanetics
还有UITextInputCurrentInputModeDidChangeNotification,您可能想尝试或观察UITextInputMode+activeInputModes属性。 - Cocoanetics

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接