我怎么能用点而不是逗号强制Swift Decimal Pad而不管语言环境?

时间:2017-11-21 18:05:31

标签: ios iphone

在Swift中,当我们选择键盘样式为Decimal Pad时,它会显示10个数字和分隔符,具体取决于您所在的国家/地区。例如,在俄罗斯,默认的小数点分隔符是','而在美国则是'。'。

在我的应用中,我只想显示带有'''的十进制垫。无论你身在何处都无所谓。

我不希望this发生 我想在每个设备中都发生this

这不是关于显示正确的键盘语言。
它是关于强制小数点分隔符符为'。'(点)app用户拥有的任何位置。
例如,我们可以从Product> Scheme> Edit Scheme> Options> Application Region - >强制localizaton。设置为美国。但我只需要改变十进制符号,而不是整个本地化。

2 个答案:

答案 0 :(得分:1)

我知道现在不再是2017年,但是... 覆盖UITextField非常简单。

class EnglishTextField: UITextField {
    override var textInputMode: UITextInputMode? { return EnglishInputMode() }
}
class EnglishInputMode : UITextInputMode {
    override var primaryLanguage: String? { "en-US" }
}

然后在“情节提要”中的UITextField的身份检查器中,将“类”(在顶部)设置为EnglishTextField。

除了一个问题外,此方法效果很好:在2019年,在显示键盘之前从未查询过“ primaryLanguage”,因此它根本无济于事。

我仍然希望自己找到答案。就我而言,我使用的是“十进制填充”以允许输入IP地址,而在所有国家/地区中,这些地址都是点分十进制的。

答案 1 :(得分:0)

对textField进行子类化并覆盖UIResponder.textInputMode并返回俄语UITextInputMode.primaryLanguage