2012-04-03 19 views
1

私は、HTML形式のテキストを含むUIWebViewを持っています。本文中のいくつかの言葉はリンクです。クリックすると、別のビューをスタックにプッシュする必要があります。この作業をするために、htmlリンクと対応するobjective-cコードをどのように書くべきですか?UIWebViewでhtmlリンクを使用してビューをスタックにプッシュするにはどうすればよいですか?

+0

http://www.theappcodeblog.com/2011/02/26/uiwebview-tutorial-link-to-an-ibaction/ OR http://inchoo.net/mobile-development/iphone-開発/ how-to-override-uiwebview-link-request-action-with-your-custom-custom-method/ –

答えて

3

はのUIWebViewのデリゲートを設定し、その後、リンクアクションを処理することができますクリック:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType { 
    if (inType == UIWebViewNavigationTypeLinkClicked) { 
     [self.navigationController pushViewController:vc animated:YES]; 
     return NO; 
    } 

    return YES; 
} 
+0

私はこのソリューションを試しましたが、shouldStartLoadWithRequestを起動することができません。プログラムでUIWebViewを作成し、それを表のセルに追加します。 ViewController.hファイルで私は次のようにデリゲートを設定しました: @interface ViewController:UIViewController セットアップには何が欠けていますか? – user1279526

+0

@ user1279526、 'myWebView.delegate = self;' – beryllium

0

スウィフト3:のフルのUIWebViewの例スタック内のビューをプッシュすると、HTMLをクリックした際に、バンドル内の別のhtmlファイルを開くにはリンク<a href="imprint.html">imprint</a>

class WebViewController: UIViewController { 

    @IBOutlet weak var webView: UIWebView!  
    var filename:String? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     guard filename != nil else { 
      fatalError("filename not defined") 
     } 

     view.backgroundColor = UIColor.white 

     webView.isOpaque = false; 
     webView.delegate = self 
     webView.backgroundColor = UIColor.clear 

     //remove file extension first 
     filename = filename!.replace(".html", replacement: "") 

     let localfilePath = Bundle.main.url(forResource: filename, withExtension: "html") 
     let myRequest = NSURLRequest(url: localfilePath!) 
     webView.loadRequest(myRequest as URLRequest) 
    } 

    ... 
} 

extension WebViewController: UIWebViewDelegate { 

    func webViewDidFinishLoad(_ webView: UIWebView) { 
     //set view title from html document 
     let pageTitle = webView.stringByEvaluatingJavaScript(from: "document.title") 
     navigationItem.title = pageTitle 
    } 

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

     if navigationType == .linkClicked, 
      let urlStr = request.url?.absoluteString, 
      !urlStr.contains("http://"), 
      let filename = request.url?.lastPathComponent, //e.g. imprint.html 
      let vc = storyboard?.instantiateViewController(withIdentifier: "WebView") as? WebViewController{ 

      vc.filename = filename 

      self.navigationController?.pushViewController(vc, animated: true) 

      return false 
     } 

     return true 
    } 
} 
関連する問題