【问题标题】:UIKeyboardWillChangeFrame Notification not called with emoji keyboard未使用表情符号键盘调用 UIKeyboardWillChangeFrame 通知
【发布时间】:2018-02-27 10:53:21
【问题描述】:

首先我有一个 UIViewController 监听 UIKeyboardWillShow 通知来调整键盘的屏幕。但是每次我换成表情键盘时,通知都没有被调用。

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

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

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

但是,如果我按住键盘类型进行选择(我的键盘有多种语言)并选择表情符号键盘,则不会触发通知。

以前有人遇到过这种情况吗?有什么建议吗?

【问题讨论】:

  • 我的应用程序会根据键盘是否显示来调整屏幕,并且在选择表情符号键盘时也能正常工作。你介意展示你的代码吗?
  • 我编辑了我的问题@TPN1994。但我真的只是添加了观察者,它适用于其他情况。我认为这在 iOS 11 上可能是一个问题,因为在其他设备上它也可以正常工作......:/
  • 我也有这个问题。 但是,如果我按住键盘类型进行选择(我的键盘有多种语言)并选择表情符号键盘,则不会触发通知。
  • 这似乎只发生在 iOS 11 上。
  • 我认为这是 iOS 11 中的一个错误,我向雷达报告了它,ID:34540300

标签: ios swift notifications keyboard emoji


【解决方案1】:

这是 iOS 11 中的一个错误,但有一个 hacky 临时解决方案:

您可以收听语言模式的变化:

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

并检查表情符号:

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

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2021-05-29
    • 2011-10-13
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    相关资源
    最近更新 更多