将当前活动的键盘语言作为NSLocale获取

我已经找到了很多方法但没有可行的解决方案。 这是我尝试过但没有用的东西。

(1)简单地调用primaryLanguage()

UITextInputMode().primaryLanguage 

→总是返回nil: – /

(2)订阅UITextInputCurrentInputModeDidChangeNotification通知

 override func viewDidLoad() { NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeInputMode:", name: UITextInputCurrentInputModeDidChangeNotification, object: nil) } func changeInputMode(sender : NSNotification) { ...?! } 

通知已被触发但不清楚我如何从通知中提取当前语言信息。

(3)使用activeInputModes()

 let localeIdentifier = UITextInputMode.activeInputModes().first as? UITextInputMode var locale:NSLocale = NSLocale(localeIdentifier: localeIdentifier.primaryLanguage!) println("Input Mode Language \(localeIdentifier.primaryLanguage!)") 

这始终提供所有可用键盘的相同arrays,没有关于实际活动键盘的信息。

如何获取当前活动键盘的NSLocale?

您可以通过访问textfields textInputMode从每个文本字段访问primaryLanguage:

 var language = textfield.textInputMode?.primaryLanguage