UIKeyboardWillChangeFrame通知不使用表情符号键盘

首先我有一个UIViewController监听UIKeyboardWillShow通知来调整键盘的屏幕。 但每次我改变表情符号键盘,通知没有被调用。

所以,我改成了UIKeyboardWillChangeFrame这样的通知

NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardChanged(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 

它似乎工作正常,如果我只是通过点击键盘types更改为表情符号。

但是,如果按住键盘types来select(我的键盘有多种语言)并select表情符号键盘,则通知不会被触发。

任何人有过这样的事情? 有什么build议么?

哈克临时解决scheme:

您可以聆听语言模式更改:

 NotificationCenter.default.addObserver(self, selector: #selector(inputModeDidChange(_:)), name: .UITextInputCurrentInputModeDidChange, object: nil) 

并检查表情符号:

 if([[UITextInputMode currentInputMode].primaryLanguage isEqualToString:@"emoji"]) // layout again