一直以來羔挡,應(yīng)用內(nèi)進(jìn)行直接電話呼叫都是用的如下代碼:
let phoneURL = NSURL(string: "tel://139xxxxxxx")!
UIApplication.sharedApplication().openURL(phoneURL)
出于安全性考慮并經(jīng)過搜索瘾带,可以通過UIWebView進(jìn)行電話呼叫堪簿,網(wǎng)絡(luò)上給出的方案如下:
let phoneURL = NSURL(string: "tel://139xxxxxxx")!
let callWebView = UIWebView()
callWebView.loadRequest(NSURLRequest(URL: phoneURL))
self.view.addSubview(callWebView)
經(jīng)過測試,功能上可以實(shí)現(xiàn)應(yīng)用內(nèi)呼叫的邏輯嗦明,但是對最后一句代碼(self.view.addSubview(callWebView))表示不理解。后經(jīng)過個人測試蚪燕,這是一個很不好的實(shí)踐娶牌,因?yàn)閏allWebView只有在它的superview被釋放的時候才能被釋放,當(dāng)呼叫動作是按鈕觸發(fā)并對其進(jìn)行頻繁點(diǎn)擊的時候邻薯,會生成若干UIWebView的實(shí)例并不能及時釋放裙戏。
進(jìn)一步測試,之所以將callWebView添加到某個view上厕诡,只是為了讓其在觸發(fā)呼叫功能之前不被release掉累榜,所以只需要有地方能引用這個webView即可。以下給出一種方式,具體可按需實(shí)現(xiàn):
先聲明變量
lazy var callWebView = UIWebView()
let phoneURL = NSURL(string: "tel://139xxxxxxx")!
self.callWebView.loadRequest(NSURLRequest(URL: phoneURL))
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者