在SwiftUI中改变键盘类型
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
的目标更换为其他即可。