Ios &引用;创建类型未知的图像格式是一个错误;通过WKWebView显示Web应用程序时

Ios &引用;创建类型未知的图像格式是一个错误;通过WKWebView显示Web应用程序时,ios,swift,swift3,uiimage,wkwebview,Ios,Swift,Swift3,Uiimage,Wkwebview,我正在Swift 3(Xcode 8.3.3)中通过WKWebView显示一个Web应用程序 WebApp正在按预期运行,但我尝试通过WebView将图像发布到服务器时除外 Xcode的控制台只打印“创建未知类型的图像格式是一个错误”,没有任何进一步的信息来帮助我进行故障排除 正如所述,可能是警报导致了此问题。WebView未正确设置以显示警报,这可能会导致错误 然而,我无法通过查看那里建议的解决方案来理解这一点 在我的视图中,我将调用函数initWebView(),其设置如下: func in

我正在Swift 3(Xcode 8.3.3)中通过WKWebView显示一个Web应用程序

WebApp正在按预期运行,但我尝试通过WebView将图像发布到服务器时除外

Xcode的控制台只打印“创建未知类型的图像格式是一个错误”,没有任何进一步的信息来帮助我进行故障排除

正如所述,可能是警报导致了此问题。WebView未正确设置以显示警报,这可能会导致错误

然而,我无法通过查看那里建议的解决方案来理解这一点

在我的视图中,我将调用函数initWebView(),其设置如下:

func initWebView() {
   let source: NSString = "var meta = document.createElement('meta');" +
        "meta.name = 'viewport';" +
        "meta.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no';" +
        "var head = document.getElementsByTagName('head')[0];" +
        "head.appendChild(meta);" as NSString
    let sourceScript: WKUserScript = WKUserScript(source: source as String, injectionTime: .atDocumentStart, forMainFrameOnly: true)

    let addCookieScript="localStorage.setItem('device', '\(self.tokenFirebase)');"
    let script: WKUserScript = WKUserScript(source: addCookieScript as String, injectionTime: .atDocumentStart, forMainFrameOnly: false)

    // Create the user content controller and add the script to it
    let userContentController = WKUserContentController()
    userContentController.addUserScript(script)
    userContentController.addUserScript(sourceScript)

    // Create the configuration with the user content controller
    let config = WKWebViewConfiguration()
    config.userContentController = userContentController

    let wkWebView = WKWebView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height), configuration: config)
    wkWebView.translatesAutoresizingMaskIntoConstraints = true
    self.wkWebView = wkWebView
    wkWebView.restorationIdentifier = "wkWebView"
    view.addSubview(wkWebView)
    wkWebView.navigationDelegate = self
    wkWebView.uiDelegate = self
    let request : NSMutableURLRequest = NSMutableURLRequest(url: self.webUrl as URL)
    wkWebView.isHidden = false
    wkWebView.load(request as URLRequest)

}
我在iPhoneSE(iOS 10)、iPhone7(iOS 10)和iPad(iOS 9.3.3)上测试了这个应用程序,结果都是一样的


编辑:可能的重复条目在我看来无效,因为它指的是通过代码实现UIImagePickerController,但在我的场景中,似乎是WKWebView创建的图像选择器导致了此问题。但是,如果我弄错了,请指导我正确的方向:)

创建具有未知类型的图像格式是一个错误这是一个通用警告,您可以安全地忽略该警告。问题应该是别的

import UIKit
import WebKit
class ViewController: UIViewController {
    var webView:WKWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
       loadWebView()
    }

    func loadWebView(){
        webView = WKWebView(frame: self.view.frame)
        self.view.addSubview(webView)
        let urlRequest = URLRequest(url: URL(string: "https://imgbb.com/")!)
        webView.load(urlRequest)
    }
}
我创建了一个网络视图,并试图从照片库上传一张图片。它确实给了我这个警告,但它成功地从照片库上传了照片。您可以尝试使用上面的代码,看看它是否适合您。顺便说一句,不要忘记在info.plist中添加访问photolibrary的权限说明


该线程中可能出现的重复问题与swift中UIImagePicker的代码实现有关,在我的示例中,该代码甚至没有按WKWEbView本身处理的方式调用(应该?)。由于显示系统图像选择器时出现警告,我认为这是重复的。他们的解决方案至少是一样的:忽略这个警告。嗯,我没有找到一个被接受的解决方案,在Swift中也没有。也许你可以用正确的方式指导我,我似乎对这个问题有点迷茫,这就是为什么我首先创建了这个线程。我还花时间彻底搜索了Stack Overflow和Google。奇怪的是,不,这段代码也不能按预期工作,不能在模拟器或任何物理设备中工作。我在Info.plist.Correction中设置了“隐私-相机使用说明”和“隐私-照片库使用说明”,当我在viewDidLoad中初始化webview而不是ViewWillook时,它将按预期执行。然而,在我的应用程序中(完全使用了您的代码,但替换了URL),我再次收到了一般错误消息,似乎它再次执行了viewDidLoad步骤……@lundzern viewDidLoad方法将首先被调用,而不是ViewWillDisplay。webview工作正常。但是,如果可能的话,请给我发电子邮件,告诉我sahil的项目。manchanda2@gmail.com. 这样我就可以看到您遇到了什么问题,在从viewDidLoad中删除此代码片段后,我现在也可以在自己的应用程序中使用它了;让我们点击:UIGestureRecognizer=UITapGestureRecognizer(目标:self,操作:#选择器(ViewController.dismissKeyboard))查看。addGestureRecognizer(点击)这是在调用以下函数:func dismissKeyboard(){view.endEditing(true)}