无论语言环境如何,我如何强制使用点而不是逗号的 Swift Decimal Pad?

Posted

技术标签:

【中文标题】无论语言环境如何,我如何强制使用点而不是逗号的 Swift Decimal Pad?【英文标题】:How can i force Swift Decimal Pad with dot instead of comma regardless of locale? 【发布时间】:2017-11-21 18:05:31 【问题描述】:

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

在我的应用程序中,我只想显示带有点 '.' 的小数点。不管你在哪里。

我不想this发生 我希望this 在每台设备上都发生!

这与显示正确的键盘语言无关。 它是关于强制小数分隔符为“。”(点)无论应用程序用户拥有什么位置。 例如,我们可以从 Product>Scheme>Edit Scheme>Options>Application Region -> set to US 强制本地化。但我只需要更改十进制符号,而不是整个本地化。

【问题讨论】:

@TamásSengel 对问题的编辑清楚地表明它不再可能重复。 【参考方案1】:

子类化您的 textField 并覆盖 UIResponder.textInputMode 并为 UITextInputMode.primaryLanguage 返回俄语

【讨论】:

如何子类化我的 textField?它提供了@IBOutlet weak var rateTextField: FloatingTextField!【参考方案2】:

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

class EnglishTextField: UITextField 
    override var textInputMode: UITextInputMode?  return EnglishInputMode() 

class EnglishInputMode : UITextInputMode 
    override var primaryLanguage: String?  "en-US" 

然后在 Storyboard 中该 UITextField 的 Identity Inspector 中,将 Class(顶部)设置为 EnglishTextField。

这很好用,除了一个问题:在 2019 年,在显示键盘之前永远不会查询“primaryLanguage”,所以它根本没有帮助。

我仍然希望自己找到答案。就我而言,我使用“小数点”来允许输入 IP 地址,并且在所有国家/地区都是点分十进制。

【讨论】:

以上是关于无论语言环境如何,我如何强制使用点而不是逗号的 Swift Decimal Pad?的主要内容,如果未能解决你的问题,请参考以下文章

C++ %f 点而不是逗号

C++ %f 点而不是逗号

如何强制将所有 404(或每个页面,无论是不是无效)重定向到主页?

Mac Excel 2016 - 图表上的小数点而不是逗号

如何使正则表达式在每个单词之间强制使用逗号?

TestCafe & chrome:headless : 如何强制浏览器语言(语言环境)