UIKeyboardWillChangeFrame Notification not called with emoji keyboard

旧城冷巷雨未停 提交于 2019-12-18 04:19:10

问题


First I had a UIViewController listenning for the UIKeyboardWillShow notification to adjust the screen for the keyboard. But every time I changed to emoji keyboard, the notification wasn't called.

So, I changed to UIKeyboardWillChangeFrame notification like this

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

It seems to work fine if I just change to emoji by tapping keyboard type.

However, if I press and hold keyboard type to select (my keyboard have more than one language) and select the emoji keyboard, the notification is not fired.

Anyone had something like this before? Any suggestions?


回答1:


This is a bug in iOS 11, but there is a hacky temporary solution:

You can listen language mode changes:

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

And check for emoji:

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


来源:https://stackoverflow.com/questions/46287136/uikeyboardwillchangeframe-notification-not-called-with-emoji-keyboard

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!