Я уже нашел много подходов для этого, но нет рабочего решения. Вот что я пробовал и не работал.
(1) Простой вызов primaryLanguage()
UITextInputMode().primaryLanguage
→ всегда возвращает ноль :-/
(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!)")
Это всегда предоставляет один и тот же массив всех доступных клавиатур, без информации о действительно активной.
Как получить NSLocale текущей активной клавиатуры?