アプリには 2 つのローカライズがあります (英語とアラビア語)。多くの UITextFields のキーボード タイプをdecimalPadに設定しました。これらのフィールドには、英語のみの小数点を強制する必要があります。ただし、アプリの言語がアラビア語の場合、キーパッドはアラビア語で表示されます。UITextField をサブクラス化し、 textInputModeをオーバーライドすることにより、iOS 12 まで正常に動作します。コードは次のとおりです。
override var textInputMode: UITextInputMode? {
for mode in UITextInputMode.activeInputModes {
if mode.primaryLanguage?.containsSubString(subString: "en") {
return mode
}
}
return nil
}
iOS 13 では、上記のコードは効果がありません。iOS 13 でデフォルトでシステム絵文字キーボードを表示するに従いました。textInputContextIdentifier をオーバーライドしますが、それでも成功しません。
override var textInputContextIdentifier: String? { return "en-US" }
PS: Number、Asci などの他のキーボード タイプでも問題なく動作します。問題は小数点パッドでのみ発生します。