我正在尝试拨打一个不使用特定号码的号码,而是拨打变量中的号码,或者至少告诉它拨打手机中的号码 . 在变量中调用的这个数字是我使用解析器或从网站sql中获取的数字 . 我做了一个按钮试图用功能调用存储在变量中的电话号码,但无济于事 . 什么都有帮助谢谢!
func callSellerPressed (sender: UIButton!){
//(This is calls a specific number)UIApplication.sharedApplication().openURL(NSURL(string: "tel://######")!)
// This is the code I'm using but its not working
UIApplication.sharedApplication().openURL(NSURL(scheme: NSString(), host: "tel://", path: busPhone)!)
}
18 回答
试一试:
假设电话号码在
busPhone
.NSURL
的init(string:)
返回一个Optional,所以通过使用if let
,我们确保url
是NSURL
(而不是init
返回的NSURL?
) .For Swift 3:
我们需要检查我们是否在iOS 10或更高版本上,因为:
iOS 10中的自包含解决方案, Swift 3 :
您应该可以使用
callNumber("7178881234")
拨打电话 .Swift 3.0和ios 10或更早版本
好的,我得到了帮助并想出来了 . 此外,我还放了一个漂亮的小警报系统,万一电话号码无效 . 我的问题是我说它是正确的,但数字有空格和不需要的字符,如(“123 456-7890”) . 如果您的号码是(“1234567890”),则UIApplication仅适用或接受 . 因此,您基本上通过创建一个新变量来仅删除数字来删除空格和无效字符 . 然后使用UIApplication调用这些数字 .
以上答案部分正确,但“tel://”只有一个问题 . 通话结束后,它将返回主屏幕,而不是我们的应用程序 . 所以最好使用“telprompt://”,它将返回到应用程序 .
我在我的应用程序中使用此方法,它工作正常 . 我希望这对你也有帮助 .
Swift 3,iOS 10
在Swift 3中,
这是使用Swift 2.0更新@ Tom的答案注 - 这是我正在使用的整个CallComposer类 .
我正在使用swift 3解决方案进行数字验证
openURL()已在iOS 10中弃用 . 以下是新语法:
For swift 3.0
斯威夫特4,
Swift 3.0解决方案:
这是使用
Scanner
将电话号码减少为有效组件的另一种方法...Swift 3.0 & iOS 10+
UIApplication.shared.openURL(url)
已更改为UIApplication.shared.open(_ url: URL, options:[:], completionHandler completion: nil)
选项和完成处理程序是可选的,呈现:
UIApplication.shared.open(url)
https://developer.apple.com/reference/uikit/uiapplication/1648685-open
对于Swift 3.1和向后兼容的方法,请执行以下操作:
如果您的电话号码包含空格,请先将其删除!然后你可以使用accepted answer's解决方案 .