簡體   English   中英

WKWebview如何處理上傳圖片?

[英]How to Handle Image uploading in WKWebview?

我已經使用 webkit 在我的應用程序上顯示 url。

當我點擊圖像按鈕(綠色按鈕圖像 ), 它顯示相機或照片庫。 問題是,當單擊Use photo時,webkit 會自動刷新而不是顯示在頁面上

  • 我已經在 plist 文件中提供了照片使用、媒體、相機權限

我的代碼是

import UIKit
import WebKit
import Alamofire

class ContinueViewController: UIViewController, WKUIDelegate {

    @IBOutlet weak var activityView: UIActivityIndicatorView!
    @IBOutlet weak var webview: WKWebView!

    func getPostString(params:[String:Any]) -> String{
            var data = [String]()
            for(key, value) in params
            {
                data.append(key + "=\(value)")

            }
            return data.map { String($0) }.joined(separator: "&")
    }

    var url: URL?
    var traderCategoryId = 0, tradeSkillId = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        webview.navigationDelegate = self
        self.navigationController?.navigationBar.isHidden = false
        webview.uiDelegate = self
    }

    override func viewWillAppear(_ animated: Bool) {
        
        super.viewWillAppear(animated)
        activityView.startAnimating()
        guard let url = self.url else { return }
        var req = URLRequest(url: url)

        let params = ["id" : id,"trader_skills" : tradeSkillId]
        let postString = self.getPostString(params: params)
        req.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

        req.httpMethod = "POST"
        req.httpBody = postString.data(using: .utf8)

        self.webview.load(req)
    }
}

extension ContinueViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        activityView.stopAnimating()
    }
}

extension UIImagePickerController {
    open override func viewDidLoad() {
        super.viewDidLoad()
      //  self.modalPresentationStyle = .fullScreen
    }
}

問題是,當單擊使用照片時,webkit 會自動刷新而不是顯示在頁面上

因為你self.webview.load(req)

override func viewWillAppear(_ animated: Bool) {

顯示相機或照片庫,然后返回此頁面

再次調用func viewWillAppear

self.webview.load(req)再次調用


做簡單的,

self.webview.load(req)相關的放在

override func viewDidLoad() {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM