我在Swift 3(Xcode 8.3.3)中通过WKWebView显示WebApp
WebApp正在按预期运行,除非我尝试通过WebView将图像发布到服务器。
来自Xcode的控制台只是打印"创建一个未知类型的图像格式是一个错误"没有任何进一步的信息来帮助我排除故障。
作为this thread indicates,可能会出现导致此问题的警报。未正确设置WebView以显示警报,并且这可能会导致错误。
然而,我无法通过查看建议的解决方案来解决这个问题。
在我的viewWillAppear中,我调用了函数 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)
}
我在iPhone SE(iOS 10)iPhone 7(iOS 10)和iPad(iOS 9.3.3)上测试的应用程序结果相同。
编辑:可能的重复条目对我来说似乎没有效果,因为它指的是通过代码实现UIImagePickerController,但在我的场景中,它是由WKWebView创建的图像选择器,它似乎导致了这个问题。但是,如果我错了,请指导我正确的方向:)答案 0 :(得分:1)
创建具有未知类型的图像格式是错误这是一个通用警告,您可以安全地忽略该警告。问题应该是其他问题。
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)
}
}
我创建了一个webview,并尝试从照片库上传图片。它确实给了我这个警告,但它成功上传了照片库中的照片。您可以尝试上面的代码,看看它是否适合您。顺便说一句,忘记在info.plist中添加权限说明以访问photolibrary