这个问题有很多答案,但在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]]];
这是拨号,但数字错了。有什么想法吗?
答案 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]];