首先我有一个UIViewController监听UIKeyboardWillShow通知来调整键盘的屏幕。但每次我改用表情符号键盘时,通知都没有被调用。
所以,我改成了像这样的UIKeyboardWillChangeFrame通知
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardChanged(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
如果我只是通过点击键盘类型更改为表情符号,似乎工作正常。
但是,如果我按住键盘类型进行选择(我的键盘有多种语言)并选择表情符号键盘,则不会触发通知。
之前有人有这样的事吗?有什么建议吗?
答案 0 :(得分:5)
这是iOS 11中的一个错误,但有一个 hacky临时解决方案:
您可以收听语言模式更改:
NotificationCenter.default.addObserver(self, selector: #selector(inputModeDidChange(_:)), name: .UITextInputCurrentInputModeDidChange, object: nil)
检查表情符号:
if([[UITextInputMode currentInputMode].primaryLanguage isEqualToString:@"emoji"]) // layout again