1

我有一个文本框和一个计算按钮,我使用的是十进制键盘,当我在 Xcode 模拟器中运行我的程序时,我在左下角得到一个点,但是当我在我的 iPhone 中运行程序时,我得到一个逗号左下角。我知道模拟器是在美国语言环境中设置的,而我在冰岛,如果我使用逗号而不是点,我不会得到相同的结果。我需要在我的文本框中使用点,而不是逗号。有没有我可以使用的代码告诉我的程序使用点而不是逗号,或者我需要为此制作一个自定义键盘。

4

2 回答 2

1
float s2 = [[dist.text stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];

dist.text = [[NSString alloc] initWithFormat:@"%0.02f", s2];
于 2013-10-25T16:40:02.503 回答
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 中运行程序时

但是你可以在模拟器上很好地测试它;只需使用设置应用程序设置语言和区域格式。

于 2013-04-14T21:16:44.747 回答