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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM