在iOS9上拨打iPhone

时间:2015-12-05 15:44:44

标签: ios objective-c iphone

这个问题有很多答案,但在iOS 9上存在一些问题。当我使用这段代码时:

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:self.lblPhone.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

我收到了这个错误:

  

LaunchServices:错误:URL方案没有注册处理程序(null)

然后我用这个改变Info.plist:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>telprompt</string>
    <string>tel</string>
</array>

但没有改变!

所以我尝试了第二个代码,这有效:

NSString *numberString = @"004986632461";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"telprompt://%@",numberString]]];

但这不是:

NSString *numberString = [NSString stringWithFormat:@"%f", [[_lblPhone text] floatValue]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"telprompt://%@",numberString]]];

这是拨号,但数字错了。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您的第二段代码无效,因为您尝试将文本格式化为浮点值。

这一行:

NSString *numberString = [NSString stringWithFormat:@"%f", [[_lblPhone text] floatValue]];

字符串4986632704.000000会产生@"004986632461"的值。

略过float部分。只是做:

NSString *numberString = _lblPhone.text;

请勿尝试将电话号码视为数值。它的文本只应作为文本处理(和存储)。

答案 1 :(得分:0)

尝试:

NSString *phoneNumber = [@"tel://" stringByAppendingString:self.lblPhone.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

以前telprompt被大多数开发者使用,因为它会在通话结束后返回应用,tel将返回主屏幕。但是从iOS 8开始,tel将在通话后返回应用。所以你可以使用它。

答案 2 :(得分:-2)

我自己解决了这个问题。这很容易。我必须清理无形的空间!

NSString *numberString = [_lblPhone.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];