在iOS中,可以使用支持ascii的十进制键盘作为UITextfield';什么是键盘类型?

在iOS中,可以使用支持ascii的十进制键盘作为UITextfield';什么是键盘类型?,ios,uitextfield,uikit,Ios,Uitextfield,Uikit,我正在编写的应用程序支持多种语言,但有一个文本字段,我希望用户只写ascii数字(即没有阿拉伯数字)和十进制分隔符。 我知道可以设置UITextfield的键盘类型,但不幸的是,存在十进制键盘和十进制键盘,但这两种键盘都不适合我的需要,因为十进制键盘没有十进制分隔符按钮,而且十进制键盘没有将其限制为ascii数字 是否可以有一个ascicapabledecimalpad?如果没有,那么在UITextField中将用户输入限制为仅ascii数字和十进制分隔符的最佳方法是什么?我没有找到任何方法强制

我正在编写的应用程序支持多种语言,但有一个文本字段,我希望用户只写ascii数字(即没有阿拉伯数字)和十进制分隔符。 我知道可以设置
UITextfield
键盘类型
,但不幸的是,存在
十进制键盘
十进制键盘
,但这两种键盘都不适合我的需要,因为
十进制键盘
没有十进制分隔符按钮,而且
十进制键盘
没有将其限制为ascii数字


是否可以有一个
ascicapabledecimalpad
?如果没有,那么在
UITextField
中将用户输入限制为仅ascii数字和十进制分隔符的最佳方法是什么?

我没有找到任何方法强制键盘同时使用ascii数字和十进制分隔符。在iPhone 8上,当用户只有阿拉伯键盘时,对于只带有东方阿拉伯数字的
.decimalPad
键盘,当用户有多个键盘(例如英语键盘)时,将显示切换按钮以更改不同的数字。但对我来说,这种行为在iPhoneX系列上是被破坏的,我认为这是苹果方面的缺陷,开关按钮不存在

我通过implements方法解决了这个问题,在这个方法中,我将(阿拉伯-印度?)替换为ASCII数字(也称为),以便在输入字符时进行验证

result=[result stringByReplacingOccurrencesOfString:@“٠”with string:@“0”];
结果=[result StringByReplacingOfString:@“١”和字符串:@“1”];
结果=[result StringByReplacingOfString:@“٢”和字符串:@“2”];
结果=[result StringByReplacingOfString:@“٣”和字符串:@“3”];
结果=[result StringByReplacingOfString:@“٤”和字符串:@“4”];
结果=[result StringByReplacingOfString:@“٥”和字符串:@“5”];
结果=[result StringByReplacingOfString:@“٦”和字符串:@“6”];
结果=[result StringByReplacingOfString:@“٧”和字符串:@“7”];
结果=[result StringByReplacingOfString:@“٨”和字符串:@“8”];
结果=[result StringByReplacingOfString:@“٩”和字符串:@“9”];
结果=[result StringByReplacingOfString:@“٫”和字符串:@.”的重复发生率;
我也这样做。这一步可能不需要,但我也需要在失去焦点后格式化数字


此修复程序正在测试中,如果有任何问题,我会通知您。

所有非拉丁字符串出现的Swift-5解决方案

extension String {
    var containsNonEnglishNumbers: Bool {
        return !isEmpty && range(of: "[^0-9]", options: .regularExpression) == nil
    }

    var english: String {
        return self.applyingTransform(StringTransform.toLatin, reverse: false) ?? self
    }
}
用法-

textField.addTarget(self, action: #selector(didChangeText(field:)), for: .editingChanged)

@objc func didChangeText(field: UITextField) {
    if ((field.text?.containsNonEnglishNumbers) != nil) {
        field.text = field.text?.english
    }
}

有更新吗?我也有这个问题