ios 我怎样才能强制Swift Decimal Pad使用点而不是逗号而不管区域设置?

vc9ivgsu  于 2023-03-14  发布在  iOS
关注(0)|答案(3)|浏览(353)

在Swift中,当我们选择键盘样式为Decimal Pad时,它会显示10个数字和分隔符,具体取决于您所在的国家。例如,在俄罗斯,默认的小数点分隔符是',',而在美国则是'.'。
在我的应用程序中,我只想显示带点'.'的小数点,而不管你在哪里。
我不希望发生
我希望this出现在每台设备上!
它不是关于显示正确的键盘语言。
这是关于强制十进制分隔符符号是'.'(点)无论位置应用程序用户。
例如,我们可以从产品〉方案〉编辑方案〉选项〉应用区域-〉设置为美国强制本地化。但我只需要更改小数符号,而不是整个本地化。

hkmswyz6

hkmswyz61#

子类化你的textField并覆盖UIResponder.textInputMode,返回俄语

qni6mghb

qni6mghb2#

我知道现在已经不是2017年了,但是...覆盖UITextField相当容易。

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

然后在情节提要中该UITextField的标识检查器中,将Class(顶部)设置为EnglishTextField。
这非常有效,除了一个问题:2019年,在显示键盘之前,“primaryLanguage”是从来没有查询过的,所以根本帮不上忙。
我仍然希望自己能找到答案。在我的例子中,我使用“小数点填充”来允许输入IP地址,而这些地址在所有国家都是点分十进制的。

0dxa2lsx

0dxa2lsx3#

我是这样解决的:
创建按钮并添加到“.inputAccessoryView”

@objc func dotButtonAction() {
    guard let newTextField = self.text else { return }
        self.text = newTextField + "."
}

所有的答案都帮不了我。

相关问题