यह Obj सी में के रूप में स्विफ्ट में अनिवार्य रूप से एक ही तरह से किया जाता है:
पहले, घोषणा करते हैं कि आपके विचार नियंत्रक UIWebViewDelegate
class MyViewController: UIWebViewDelegate
के अनुरूप फिर अपने दृश्य नियंत्रक में webViewShouldStartLoadingWithRequest:navigationType:
लागू:
// Swift 1 & 2
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .LinkClicked:
// Open links in Safari
UIApplication.sharedApplication().openURL(request.URL)
return false
default:
// Handle other navigation types...
return true
}
}
// Swift 3
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .linkClicked:
// Open links in Safari
guard let url = request.url else { return true }
if #available(iOS 10.0, *) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
// openURL(_:) is deprecated in iOS 10+.
UIApplication.shared.openURL(url)
}
return false
default:
// Handle other navigation types...
return true
}
}
अंत में, अपने UIWebView
के प्रतिनिधि को सेट करें, उदाहरण के लिए, viewDidLoad
में या अपने स्टो में ryboard:
webView.delegate = self
स्रोत
2015-02-18 01:47:08
ठीक है के लिए अपडेट किया गया। केवल एक बिट मैं इसे 'क्लास MyViewController: UIWebViewDelegate' नहीं समझता। मैं इसके साथ क्या करूं? धन्यवाद – crossboy007
स्विफ्ट में, आप घोषणा कर सकते हैं कि कक्षा का नाम कक्षा के बाद प्रोटोकॉल नाम जोड़कर आपकी कक्षा प्रोटोकॉल के अनुरूप होती है ([दस्तावेज़ देखें] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/ Swift_Programming_Language/Protocols.html # // apple_ref/doc/यूआईडी/TP40014097-CH25-ID267))। आपके मामले में, शायद यह 'क्लास MyViewController: UIViewController, UIWebViewDelegate {... वर्ग में सामान ...} ' –
धन्यवाद @RonaldMartin, यह आकर्षण की तरह काम करता है, आपको बहुत धन्यवाद –