Native UITextField Secure Text Entry forces English (US) keyboard

后端 未结 10 1950
离开以前
离开以前 2020-12-13 19:19

I have a very simple login page (login + password).

My users are french, so their keyboard are French (azerty).

Since iOS 12, when they click on the password

10条回答
  •  眼角桃花
    2020-12-13 19:44

    Swift 3:

    Create base class for UITextField with languageCode and textInputMode.

    class BaseTextField: UITextField {
    
    // ru, en, ....
    var languageCode: String? {
    
        didSet{
    
            if self.isFirstResponder{
    
                self.resignFirstResponder();
                self.becomeFirstResponder();
            }
        }
    }
    
    override var textInputMode: UITextInputMode? {
    
        if let language_code = self.languageCode {
    
            for keyboard in UITextInputMode.activeInputModes {
    
                if let language = keyboard.primaryLanguage {
    
                    let locale = Locale.init(identifier: language);
                    if locale.languageCode == language_code {
    
                        return keyboard;
                    }
                }
            }
        }
    
        return super.textInputMode;
    }}
    

    Usage:

    Set your value (ru, en, ...) to languageCode. It will force change the locale in the keyboard.

    private func textConfigure(textField: UITextField) {
    
        textField.keyboardType = .default
        textField.autocapitalizationType = .words
        textField.languageCode = "ru"
    }
    

    Hope help you.

提交回复
热议问题