use*_*367 39 nsurl openurl swift xcode6
我已经将用于打电话的代码从Objective-C转换为Swift,但在Objective-C中,我们可以设置我们想要打开的URL类型(例如电话,短信,网络),如下所示:
@"tel:xx"
@"mailto:info@example.es"
@"http://stackoverflow.com"
@"sms:768number"
Run Code Online (Sandbox Code Playgroud)
Swift中的代码是:
UIApplication.sharedApplication().openURL(NSURL(string : "9809088798")
Run Code Online (Sandbox Code Playgroud)
我读过没有发布任何方案参数tel:,但我不知道Swift是否可以检测该字符串是用于打电话,发送电子邮件还是打开网站.或者我可以写:
(string : "tel//:9809088798")
Run Code Online (Sandbox Code Playgroud)
?
Lou*_*nco 77
我很确定你想要:
UIApplication.sharedApplication().openURL(NSURL(string: "tel://9809088798")!)
Run Code Online (Sandbox Code Playgroud)
(请注意,在你的问题文本中,你放了tel//:,而不是tel://).
NSURL的字符串init需要格式良好的URL.它不会将一堆数字变成电话号码.您有时会在UIWebView中看到电话号码检测,但这比NSURL更高.
编辑:添加!以下评论
Zor*_*ayr 16
Swift中一个独立的解决方案:
private func callNumber(phoneNumber:String) {
if let phoneCallURL:NSURL = NSURL(string:"tel://\(phoneNumber)") {
let application:UIApplication = UIApplication.sharedApplication()
if (application.canOpenURL(phoneCallURL)) {
application.openURL(phoneCallURL);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您应该可以用来callNumber("7178881234")打电话了.
对于iOS中的Swift:
var url:NSURL? = NSURL(string: "tel://9809088798")
UIApplication.sharedApplication().openURL(url!)
Run Code Online (Sandbox Code Playgroud)
您需要记住删除空格,否则它将无法工作:
if let telephoneURL = NSURL(string: "telprompt://\(phoneNumber.stringByReplacingOccurrencesOfString(" ", withString: ""))") {
UIApplication.sharedApplication().openURL(telelphoneURL)
}
Run Code Online (Sandbox Code Playgroud)
"telprompt://"将提示用户呼叫或取消,而"tel://"将直接呼叫.
小智 5
你必须插入 "+"\ 是另一种方式
private func callNumber(phoneNumber:String) {
if let phoneCallURL:NSURL = NSURL(string:"tel://"+"\(phoneNumber)") {
let application:UIApplication = UIApplication.sharedApplication()
if (application.canOpenURL(phoneCallURL)) {
application.openURL(phoneCallURL);
}
}
}
Run Code Online (Sandbox Code Playgroud)
@ confile:
问题是,在iOS7上完成电话呼叫后,您的解决方案不会返回应用程序. - 6月19日13:50
&@ Zorayr
嗯,好奇,如果有一个解决方案确实这样做..可能是对iOS的限制.
使用
UIApplication.sharedApplication().openURL(NSURL(string: "telprompt://9809088798")!)
Run Code Online (Sandbox Code Playgroud)
您将收到呼叫/取消的提示,但它会返回到您的应用程序.AFAIK没有办法返回(没有提示)
Swift 3 的小更新
UIApplication.shared.openURL(NSURL(string: "telprompt://9809088798")! as URL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50712 次 |
| 最近记录: |