UITextField中的大数字不正确

时间:2014-04-25 04:09:42

标签: iphone nsurl

我有一个应用程序,其中包含用户在电话号码中键入的UITextField,然后点击调用按钮,然后调用此方法。

- (IBAction)callVendor:(id)sender {
    NSString *phoneNumber = [NSString stringWithFormat:@"tel:%f", 
       self.phoneTextField.text.doubleValue];
    [[UIApplication sharedApplication] openURL: [NSURL URLWithString:phoneNumber]];
}

当我尝试使用.intValue创建字符串时,电话号码完全关闭。我拨打的是德克萨斯而不是堪萨斯!

当我尝试使用double时,我得到一个更大的数字,因为NSURL类忽略了小数我猜。所以我拨打555-555-5555-000000

之类的东西

当我使用浮动时,我得到一个舍入错误。像555-555-5634-000000而不是555-555-5555-000000。我假设这个是由二进制 - >基数为10的舍入错误。

如果我需要拨打国际电话或没有区号,我不想将其截断为10个号码。我有什么选择?

1 个答案:

答案 0 :(得分:2)

您可以做的最好的事情是将电话号码作为NSString传递。为什么要将它转换为数字?它甚至可以包含一个+号。 您可以通过执行以下操作来修剪所有不需要的字符:

NSCharacterSet *charactersToRemove = [[NSCharacterSet characterSetWithCharactersInString:@"+0123456789"] invertedSet];
NSString *newPhoneNumber = [[self.phoneTextField.text componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""];
newPhoneNumber = [NSString stringWithFormat:@"tel:%@", newPhoneNumber];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:newPhoneNumber]];