我有一个文本框和一个计算按钮,我使用的是十进制键盘,当我在Xcode模拟器中运行我的程序时,我在左下角得到一个点但是当我在我的iPhone中运行程序时,我得到一个左下角有逗号。我知道模拟器是在美国Locale上设置的,而我在冰岛,如果使用逗号而不是点,我得不到相同的结果。我需要在文本框中使用点,而不是逗号。是否有任何我可以使用的代码告诉我的程序使用点而不是逗号,或者我是否需要为此创建一个自定义键盘。
答案 0 :(得分:1)
不清楚你在追求什么。如果要更改键盘的外观,则必须编写自己的键盘。但是,如果通过在文本字段中添加一个点来响应逗号就足够了,您可以通过截取文本字段的委托中的逗号来轻松地做到这一点。实施textField:shouldChangeCharactersInRange:replacementString:
。像这样的东西(没有经过测试,所以你可能需要调整一些):
-(BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
if (![string isEqualToString: @","])
return YES;
textField.text =
[textField.text stringByReplacingCharactersInRange:range
withString: @"."];
return NO;
}
如果问题是逗号是可以的,但是在逗号是小数点的国家/地区,您希望将它用作小数点,只需在将字符串拉出文本字段时使用NSNumberFormatter把它变成一个数字。现在你通过说[_PipeID.text floatValue]
来做到这一点。该电话没有关于该地区的情报。 NSNumberFormatter:
NSNumberFormatter* nf = [[NSNumberFormatter alloc] init];
nf.locale = [NSLocale currentLocale];
NSNumber* n = [nf numberFromString: tf.text];
// and *then* you can convert the NSNumber to a float with `floatValue`
NSLog(@"%f",n.floatValue);
顺便说一下,你说:
当我在Xcode模拟器中运行程序时......但是当我在iPhone中运行程序时
但你可以在模拟器上完美地测试这个;只需使用“设置”应用设置语言和区域格式。
答案 1 :(得分:1)
float s2 = [[dist.text stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];
dist.text = [[NSString alloc] initWithFormat:@"%0.02f", s2];