2010-07-19 69 views
4

我已经实现了通过点击我酒店的一行描述性桌面视图来拨打电话的功能;我通过在方法“didSelectRowAtIndexPath”中写入以下代码来使用URL方案:从我的iPhone应用程序拨打电话

NSString *phoneNumber=element.phone;          
[NSString *phoneNumberScheme = [NSString stringWithFormat:@"tel:%@ ", phoneNumber]; 
NSlog(phoneNumberScheme);      
phoneNumberScheme = [phoneNumberScheme stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumberScheme]]; 

没有错误! NSlog验证了这个数字被正确读取,所以它是(确实在控制台上出现,电话:1-408-555-5555)。问题是没有任何反应!

在这一点上(也是基于我在网上阅读的内容),我怀疑我无法在模拟器上测试这个东西!我做错了什么或者我不能在模拟器上测试这个“URL方案”吗?!

+0

你有空间在@ @“tel:%@”'末尾。 '[@“tel:”stringByAppendingString:phoneNumber]'也比较干净。 – 2010-07-19 16:41:24

+0

我和你的语法有什么区别? 谢谢 – Claudio 2010-07-20 08:20:23

回答

5

要扩大seanny94的答案:该模拟器不支持iOS的很多URL方案,包括手机,地图,Youtube和SMS应用程序。 iPod touch和iPad等设备也没有电话功能;在通过-openURL:使用任何URL方案之前,您应该使用-canOpenURL:检查是否支持该方案,该方案将返回YESNO,具体取决于当前设备是否支持您正在使用的URL方案。

+0

非常感谢你 – Claudio 2010-07-19 16:51:06

2

您不能在模拟器中测试电话(或任何基于电话的功能)。没有支持它。

+0

非常感谢你 – Claudio 2010-07-19 16:51:53

0

试试这个有用的代码

确认后,为您的代码

NSString *trimmedString = [yourNumberString stringByReplacingOccurrencesOfString:@" " withString:@""]; 

代码调用remove空间

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:trimmedString]; 

代码直接调用

NSString *phoneNumber = [@"tel://" stringByAppendingString:trimmedString]; 
NSLog(@"Number : %@",phoneNumber); 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];