UITextInputMode 通知对象未绑定到常量

问题描述

我希望检测用户何时点击键盘的更改输入语言按钮。我正在使用通知中心进行检测。

我的问题存在于通知观察者调用方法中。被调用方法不会在第一个打印语句之后执行通知对象绑定到'inputMode' let 常量是否有问题?

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    NotificationCenter.default.addobserver(self,selector: #selector(inputModeDidChange(_:)),name: UITextInputMode.currentInputModeDidChangeNotification,object: nil)
    loadLanguages()
}
    
override func viewWilldisappear(_ animated: Bool) {
    super.viewWilldisappear(animated)
NotificationCenter.default.removeObserver(UITextInputMode.currentInputModeDidChangeNotification)
}

@objc func inputModeDidChange(_ notification: Notification) {
    print("inputModeDidChange notification in languagesView fired!")
    if let inputMode = notification.object as? UITextInputMode {                           
        print("inside inputMode in inputModeDidChange in languagesView")
        if let language = inputMode.primaryLanguage {
            print("inside language in inputModeDidChange in languagesView")
            keyboardLanguage = language
            UserDefaults.standard.set(keyboardLanguage,forKey: "keyboard")
            print("keyboardLanguage in inputModeDidChange in languagesView is: \(keyboardLanguage ?? "")")
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)