iOS: 如何检测键盘变化事件
iOS: How to detect keyboard change event
Xcode 9.2,iOS 10.0+,swift4.
我正在开发一个项目,用户在 UITextField
中输入英文字符并将其转换为日文字符。它工作完美。现在,我想让用户直接从日语输入日语字符 Keyboard.In 这种情况我想知道键盘从默认设置更改为另一个 type/language.
那么,有什么功能或通知可以帮助我吗?
注册接收以下通知:
UITextInputCurrentInputModeDidChangeNotification
只要键盘语言发生变化,您就会收到通知。您可以从 UITextInputMode 文档中获取更多信息。
您可以使用 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
}
}
}
随着最近对 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
在 swift 4.2
//keyboard type change
NotificationCenter.default.addObserver(self, selector: #selector(inputModeDidChange), name: UITextInputMode.currentInputModeDidChangeNotification, object: nil)
@objc func inputModeDidChange(_ notification: Notification) {
if let inputMode = notification.object as? UITextInputMode {
if let lang = inputMode.primaryLanguage {
print("langueage:: \(lang)")
}
}
}
Xcode 9.2,iOS 10.0+,swift4.
我正在开发一个项目,用户在 UITextField
中输入英文字符并将其转换为日文字符。它工作完美。现在,我想让用户直接从日语输入日语字符 Keyboard.In 这种情况我想知道键盘从默认设置更改为另一个 type/language.
那么,有什么功能或通知可以帮助我吗?
注册接收以下通知:
UITextInputCurrentInputModeDidChangeNotification
只要键盘语言发生变化,您就会收到通知。您可以从 UITextInputMode 文档中获取更多信息。
您可以使用 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
}
}
}
随着最近对 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
在 swift 4.2
//keyboard type change
NotificationCenter.default.addObserver(self, selector: #selector(inputModeDidChange), name: UITextInputMode.currentInputModeDidChangeNotification, object: nil)
@objc func inputModeDidChange(_ notification: Notification) {
if let inputMode = notification.object as? UITextInputMode {
if let lang = inputMode.primaryLanguage {
print("langueage:: \(lang)")
}
}
}