Xcode 9.2,iOS 10.0 +,swift4。
我正在一个项目中,用户在UITextField
中输入英文字符并将其转换为日语字符。并且它工作完美。现在,我希望允许用户直接从日语键盘输入日语字符。在这种情况下,我想知道键盘已从默认更改为另一种类型/语言。
那么,是否有任何功能或通知可以帮助我?
答案 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