標籤:
實現原理:
1.通過UIWebView的stringByEvaluatingJavaScriptFromString方法來觸發指令碼
2.通過自訂串連來觸發oc代碼
實現過程
@IBOutlet weak var webView: UIWebView! override func viewDidLoad() { super.viewDidLoad() webView.loadRequest(NSURLRequest(URL: NSURL(string: "http://passport.cnblogs.com/user/signin")!)) webView.delegate=self } //串連改變時 func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool{ var rurl = request.URL?.absoluteString if (rurl!.hasPrefix("ios:")){ var method = rurl!.componentsSeparatedByString("@")[1] if method == "signin_go"{ signin_go() } return false } return true } //載入完成時 func webViewDidFinishLoad(webView: UIWebView){ //注入指令碼,這個指令碼把登入方法js重寫為串連 var jsPath = NSBundle.mainBundle().pathForResource("app", ofType: "js") var jsContent:NSString = NSString (contentsOfFile: jsPath!, encoding: 0, error: nil)! jsContent=jsContent.stringByReplacingOccurrencesOfString("\n", withString: "") webView.stringByEvaluatingJavaScriptFromString(jsContent as String) } func signin_go(){ NSLog("-我執行了signin_go-") }
var script = document.createElement(‘script‘);script.type = ‘text/javascript‘;script.text = ‘function signin_go(){ location.href="ios:@signin_go";}‘;document.getElementsByTagName(‘head‘)[0].appendChild(script);
轉載請註明來源:http://www.cnblogs.com/wuxian/p/4470634.html
一步一步學習Swift之(四)玩轉UIWebView