Xcode 9.2,iOS 10.0 +,swift4。
我正在开发一个项目,用户在UITextField
中输入英文字符并将其转换为日语字符。它工作得很完美。现在,我想允许用户直接从日语键盘输入日语字符。在这种情况下,我想知道键盘从默认更改为另一种类型/语言。
那么,是否有任何功能或通知可以帮助我?
您可以使用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
}
}
}
注册以接收以下通知:
UITextInputCurrentInputModeDidChangeNotification
只要键盘语言发生变化,您就会收到通知。您可以从UITextInputMode docs获得更多信息。
随着最近对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
}
在较新的Swift版本中,通知已重命名为UITextInputMode.currentInputModeDidChangeNotification