My technology blog

Why?

有些时候,我需要强制用户使用某种键盘输入,一般是英文。因为.onChange对中文输入支持一言难尽。

How?

SwiftUI没有提供任何方法,或许是不太常用。所以我们需要借助万能的UIKit

TextFiled其实在UIkit中对应UITextFiled,所以我们需要对UITextFIeld进行一些改变。

extension UITextFiled {
    public override var textInputMode: UITextInputMode? {
        UITextInputMode.activeInputModes.forEach({ print($0.primaryLanguage ?? "")})
        
        return UITextInputMode.activeInputModes.first(where: { $0.primaryLanguage?.contains("en-US") ?? false }) ?? super.textInputMode
    }
}

你可以将"en-US"替换成任何你需要的键盘标识符,你可以用一个变量来代替他,这样你就可以实时更改他了,他会自动刷新。

Other

对于任何类似UITextFiled的组件都支持这个功能,只要将extension的目标更换为其他即可。

You’ve successfully subscribed to UTS Blog
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Your link has expired
Success! Check your email for magic link to sign-in.