WKWebView 因某些查询而崩溃 (iOS Swift)
WKWebView crashing with certain queries (iOS Swift)
我正在开发一个类似 tinder 的 babynames 刷卡应用程序。我创建了一个方法,当你点击一个你最喜欢的名字旁边的按钮时,它会弹出一个 window(一个带有 WKWebView 的 UIViewController),显示一个 google 搜索,其含义如下特定名称。
问题是,对于某些名称,应用程序会崩溃,因为 URL returns 为零。我不明白发生了什么,因为其他名字工作得很好。我发现它发生在斯堪的纳维亚名字中,例如“OddVeig”和“OddLaug”。
下面是我的 UIViewController class 随搜索结果弹出(我将所有初始化代码放在 layoutSubViews() 中,因为我在 iOS 12 中遇到了一些问题,其中如果我将它放在 viewDidLoad() 中,WKWebView 将无法正确调整大小):
import UIKit
import WebKit
class WebViewController: UIViewController, WKNavigationDelegate {
@IBOutlet weak var webContainer: UIView!
var webView : WKWebView!
var query : String?
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLayoutSubviews() {
webView = WKWebView()
webView.navigationDelegate = self
webContainer.addSubview(webView)
self.view.alpha = 0.9
webView.frame = self.view.frame
webView.layer.position.y += 20
let slideDownImage = UIButton(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 30))
slideDownImage.setImage(UIImage(named: "slideIconWhite"), for: .normal)
slideDownImage.imageView?.contentMode = .scaleAspectFit
if let n = query {
let url = URL(string: "https://www.google.com/search?q=\(n)")! // Causing error: Found nil
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
}
webContainer.addSubview(slideDownImage)
slideDownImage.frame = CGRect(x: 0, y: 0, width: self.webView.frame.size.width, height: 20)
slideDownImage.backgroundColor = .gray
slideDownImage.alpha = 0.7
slideDownImage.addTarget(self, action: #selector(slideDown), for: .touchUpInside)
}
@objc func slideDown() {
self.dismiss(animated: true, completion: nil)
}
}
我像这样在 FavoritesViewController class 中使用 segue :
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "favoritesToWeb" {
let destination = segue.destination as! WebViewController
destination.query = "\(searchName)+\(NSLocalizedString("meaning", comment: "meaning"))"
}
}
希望有人能告诉我我做错了什么。
提前致谢。
帕特里克
query
变量需要进行百分比编码,我想当查询字符串中有空白字符时这一定会崩溃。使用 addingPercentEncoding
为查询字符串添加百分比编码。
参考API:
https://developer.apple.com/documentation/foundation/nsstring/1411946-addingpercentencoding
相关问题:
我正在开发一个类似 tinder 的 babynames 刷卡应用程序。我创建了一个方法,当你点击一个你最喜欢的名字旁边的按钮时,它会弹出一个 window(一个带有 WKWebView 的 UIViewController),显示一个 google 搜索,其含义如下特定名称。
问题是,对于某些名称,应用程序会崩溃,因为 URL returns 为零。我不明白发生了什么,因为其他名字工作得很好。我发现它发生在斯堪的纳维亚名字中,例如“OddVeig”和“OddLaug”。
下面是我的 UIViewController class 随搜索结果弹出(我将所有初始化代码放在 layoutSubViews() 中,因为我在 iOS 12 中遇到了一些问题,其中如果我将它放在 viewDidLoad() 中,WKWebView 将无法正确调整大小):
import UIKit
import WebKit
class WebViewController: UIViewController, WKNavigationDelegate {
@IBOutlet weak var webContainer: UIView!
var webView : WKWebView!
var query : String?
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLayoutSubviews() {
webView = WKWebView()
webView.navigationDelegate = self
webContainer.addSubview(webView)
self.view.alpha = 0.9
webView.frame = self.view.frame
webView.layer.position.y += 20
let slideDownImage = UIButton(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 30))
slideDownImage.setImage(UIImage(named: "slideIconWhite"), for: .normal)
slideDownImage.imageView?.contentMode = .scaleAspectFit
if let n = query {
let url = URL(string: "https://www.google.com/search?q=\(n)")! // Causing error: Found nil
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
}
webContainer.addSubview(slideDownImage)
slideDownImage.frame = CGRect(x: 0, y: 0, width: self.webView.frame.size.width, height: 20)
slideDownImage.backgroundColor = .gray
slideDownImage.alpha = 0.7
slideDownImage.addTarget(self, action: #selector(slideDown), for: .touchUpInside)
}
@objc func slideDown() {
self.dismiss(animated: true, completion: nil)
}
}
我像这样在 FavoritesViewController class 中使用 segue :
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "favoritesToWeb" {
let destination = segue.destination as! WebViewController
destination.query = "\(searchName)+\(NSLocalizedString("meaning", comment: "meaning"))"
}
}
希望有人能告诉我我做错了什么。 提前致谢。
帕特里克
query
变量需要进行百分比编码,我想当查询字符串中有空白字符时这一定会崩溃。使用 addingPercentEncoding
为查询字符串添加百分比编码。
参考API: https://developer.apple.com/documentation/foundation/nsstring/1411946-addingpercentencoding
相关问题: