iOS键盘语言在特定语言中不会更改

iOS键盘语言在特定语言中不会更改,ios,swift,Ios,Swift,我可以通过参考将键盘语言从ja JP更改为vi VN。 但是我不能在相同的代码中将vi-VN更改为en-US 我不知道为什么会发生这种情况,但我已经解决了。解决方法是,我总是在更改其他语言之前设置语言ja JP(请参阅) 这个项目重现了这个问题。但在func selectLanguage中启用BEGIN:to END:block可以解决这个问题 import UIKit class ViewController: UIViewController { @IBOutlet weak var

我可以通过参考将键盘语言从ja JP更改为vi VN。 但是我不能在相同的代码中将vi-VN更改为en-US

我不知道为什么会发生这种情况,但我已经解决了。解决方法是,我总是在更改其他语言之前设置语言ja JP(请参阅)

这个项目重现了这个问题。但在func selectLanguage中启用BEGIN:to END:block可以解决这个问题

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var textField: UITextField!
var lang = "en-US"

@IBAction func selectLanguage(_ sender: UISegmentedControl) {
    // BEGIN: Changing Keyboard language en-US to vi-VN is working if this comment this block out.
//        lang = "ja-JP"
//        self.textField.resignFirstResponder()
//        self.textField.becomeFirstResponder()
    // END:   Changing Keyboard language en-US to vi-VN is working if this comment this block out.

    switch sender.selectedSegmentIndex {
    case 0: // English
        lang = "en-US"
    case 1: // Vietnamese
        lang = "vi-VN"
    case 2: // Japanese
        lang = "ja-JP"
    default:
        break
    }

    // ReDisplay Keyboard
    self.textField.resignFirstResponder()
    self.textField.becomeFirstResponder()

}

override var textInputMode: UITextInputMode?{
    var tim = super.textInputMode

    for mode in UITextInputMode.activeInputModes {
        if mode.primaryLanguage!.localizedStandardContains(lang) {
            tim = mode
        }
        print("Available Keyboard: ", mode.primaryLanguage ?? "nil")
    }

    print("Selected language: ", tim?.primaryLanguage ?? "unknown")

    return tim
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

}


}
我想知道解决这个问题的正确方法。
谢谢。

对不起,如果问题已经解决,那么问题出在哪里?我想知道为什么在将语言vi VN更改为en-US或en-US更改为vi-VN时必须添加“开始到结束”块。