你被错误地看这个问题。当您使用小数键盘设置文本字段时,小键盘将根据用户的区域设置显示句点或逗号。这是你想要的。有些用户会希望像3.14
输入十进制数,而其他用户将要进入他们的3,14
。
运行设置应用程序和去一般,那么国际。看看区域格式设置。这决定了用户的区域设置以及是否使用了句点或逗号。您的设备和模拟器必须使用不同的区域格式设置进行设置。
下面是最后一部分 - 一旦用户输入十进制值,您必须使用NSNumberFormatter
将输入到文本字段的字符串正确转换为NSNumber
。 NSNumberFormatter
将根据用户的语言环境正确处理数字中的逗号或句点。此外,当您需要向用户显示号码时,请使用NSNumberFormatter
将号码转换为字符串。这将确保号码以用户期望的格式显示给用户。
不要在用户输入值的过程中用句点替换逗号。它会混淆用户。
更新
一件事,你可以在shouldChangeCharactersInRange
委托方法做的是只要确定所输入的所有字符都是有效的字符数。我不会做像检查两个小数点分隔符字符的事情。只要让用户键入数字相关的字符。
当用户试图离开文本字段时,您会进行最终验证。例如:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *val = [formatter numberFromString:textField.text];
return val != nil; // don't let the user leave if text is not a valid number
}
这是一种可怕的用户体验。请为了您的客户,看看我的答案。 – rmaddy 2013-02-16 18:31:27