iOS:如何检测键盘更改事件

时间:2018-08-17 13:51:37

标签: ios swift uikeyboard

Xcode 9.2,iOS 10.0 +,swift4。

我正在一个项目中,用户在UITextField中输入英文字符并将其转换为日语字符。并且它工作完美。现在,我希望允许用户直接从日语键盘输入日语字符。在这种情况下,我想知道键盘已从默认更改为另一种类型/语言。

那么,是否有任何功能或通知可以帮助我?

4 个答案:

答案 0 :(得分:2)

您可以使用UITextInputCurrentInputModeDidChange通知来检测当前键盘语言的更改时间。

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

@objc func inputModeDidChange(_ notification: Notification) {
    if let inputMode = notification.object as? UITextInputMode {
        if let lang = inputMode.primaryLanguage {
            // do something
        }
    }
}

答案 1 :(得分:1)

注册以接收以下通知:

UITextInputCurrentInputModeDidChangeNotification

只要键盘语言发生变化,您都会收到一条通知。您可以从--patch option文档中获取更多信息。

答案 2 :(得分:0)

随着iOS 12的最新更改,您可以尝试使用swift 5.0:

func prepareForKeyboardChangeNotification() {
    NotificationCenter.default.addObserver(self, selector: #selector(changeInputMode), name: UITextInputMode.currentInputModeDidChangeNotification, object: nil)
}

@objc
func changeInputMode(notification: NSNotification) {
    let inputMethod = txtInput.textInputMode?.primaryLanguage
    //perform your logic here

}

答案 3 :(得分:0)

在较新的Swift版本中,通知已重命名为UITextInputMode.currentInputModeDidChangeNotification