gpt4 book ai didi

ios - iPad 模拟器正常但 iPad 在使用 WKWebview 上传图像时崩溃应用程序

转载 作者:搜寻专家 更新时间:2023-11-01 06:37:13 28 4
gpt4 key购买 nike

背景和简短摘要

我正在使用 WkWebview 来显示我的应用程序的网页。我有它,以便您可以从相机或照片库中选择图像。但是,应用程序在选择图像时崩溃似乎存在问题。

规范

我在 Tablet 上运行 IOS 10.0.2,在模拟器上运行 IOS 10.0,使用 Swift 3。我从 XCode 8 运行两者。

在模拟器上,我在尝试上传图片时遇到“错误”

我收到以下消息:

2016-10-19 02:15:36.150670 z4[31561:14708540] [Generic] 
Creating an image format with an unknown type is an error

图像很好,我可以用它来上传。我认为这种行为很奇怪,但我读到它与 IOS 上的内存管理有关

在平板电脑上我得到以下信息

Terminating app due to uncaught exception 'NSGenericException', 
reason: 'Your application has presented a
UIAlertController (<UIAlertController: 0x151e80350>)
of style UIAlertControllerStyleActionSheet.

The modalPresentationStyle of a UIAlertController
with this style is UIModalPresentationPopover.
You must provide location information for this
popover through the alert controller's popoverPresentationController.


You must provide either a sourceView and sourceRect or a barButtonItem.
If this information is not known when you present the alert controller,
you may provide it in the UIPopoverPresentationControllerDelegate method
-prepareForPopoverPresentation.'

应用程序似乎在 AppDelegate 中崩溃。我不知道如何去做他们的建议。我也不知道这是否是更深层次问题的一部分,或者我是否遗漏了一些非常简单的事情。

我拥有的与 UIAlerts 相关的代码

以下是我与 UIAlertController 相关的 3 个函数

   func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {


let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)

alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
completionHandler()
}))
self.popoverPresentationController?.sourceView = self.view
self.popoverPresentationController?.sourceRect = self.view.bounds
self.present(alertController, animated: true, completion: nil)
}

func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {


let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)

alertController.addAction(UIAlertAction(title: "Yes", style: .default, handler: { (action) in
completionHandler(true)
}))

alertController.addAction(UIAlertAction(title: "No", style: .default, handler: { (action) in
completionHandler(false)
}))
self.popoverPresentationController?.sourceView = self.view
self.popoverPresentationController?.sourceRect = self.view.bounds
self.present(alertController, animated: true, completion: nil)
}

func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (String?) -> Void) {


let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet)

alertController.addTextField { (textField) in
textField.text = defaultText
}

alertController.addAction(UIAlertAction(title: "Yes", style: .default, handler: { (action) in
if let text = alertController.textFields?.first?.text {
completionHandler(text)
} else {
completionHandler(defaultText)
}

}))

alertController.addAction(UIAlertAction(title: "No", style: .default, handler: { (action) in

completionHandler(nil)

}))

self.popoverPresentationController?.sourceView = self.view
self.popoverPresentationController?.sourceRect = self.view.bounds
self.present(alertController, animated: true, completion: nil)
}

我该如何处理这个异常并解决这个问题,这样我的应用程序才不会崩溃?如果需要,我可以提供更多详细信息和代码。提前感谢您的帮助。

最佳答案

您必须对代码做一些小改动才能在 iPad 上工作。我正在添加您的代码中缺少的行。

self.popoverPresentationController = alertController.popoverPresentationController
alertController.modalPresentationStyle = .Popover

将这两行代码添加到您的 3 个函数中。

关于ios - iPad 模拟器正常但 iPad 在使用 WKWebview 上传图像时崩溃应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40123838/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com