iOS 開發之路(WKWebView內嵌HTML5之圖片上傳) 五,

來源:互聯網
上載者:User

iOS 開發之路(WKWebView內嵌HTML5之圖片上傳) 五,

  HTML5頁面的圖片上傳功能在iOS端的實現。

  首先,頁面上用的是plupload組件,在wkwebview上存在兩個坑需要修複才能正常使用。

  問題:在webview上點擊選擇照片/相機拍攝,就會出現whose view is not in the window hierarchy這個錯誤。其實stackoverflow上有這個錯誤的解釋,但是我們並不能採取相應的方法去解決,因為咱們這個新彈出的UIPictureView並不是由我們決定在viewDidLoad還是viewWillAppear出現的。

  解決方案:比方說三個視圖(NavagationViewController\mainViewController\webViewController)將NavagationViewController設定為根視圖:

UIApplication.shared.keyWindow?.rootViewController = anotherView

  然後mainViewController在storyboard裡面設定為NavagationViewController的rootviewcontroller。再然後通過push跳轉視圖到webViewController:

        let myStoryBoard = self.storyboard        let dblzView:UITableViewController = (myStoryBoard?.instantiateViewController(withIdentifier: "dblz"))! as! UITableViewController        self.navigationController?.pushViewController(dblzView, animated: true)

  這裡邊出錯的原因是因為我設計的app一開啟的initial View Controller是一個登陸頁,所以登陸頁跳轉到mainViewController後要把mainViewController設定為根視圖。

  還有一個問題是點擊選擇照片彈出照片選擇視圖沒問題,但是選好圖片之後立刻跳轉到webview,就像是重新整理了一下。這裡出錯的原因是因為wkwebview的裝載千萬不能放在viewDidAppear,必須放到viewDidLoad裡。

  這個問題我在stackoverflow上查了巨久都沒找到問題,然後越查越遠,問題被我搞得巨複雜,最後在apple develop中心看到一個人的文章才解決的。

override func viewDidLoad() {  self.view.addSubview(self.wk)}override func viewDidAppear() {  //self.view.addSubview(self.wk)放在這也能正常載入出webview,但是圖片上傳就會出Bug
}

  所以有時候,不能把一個簡單的問題複雜化。

  最後,開發環境:swift 3 iOS 10 Xcode 8 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.