- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 iOS 开发一个简单的 Web 包装器应用程序,但我在使用 WKWebView 和 WKNavigationDelegate 时遇到了一些问题。我想使用 WKNavigationDelegate 的 didFinishNavigation 函数,这样我就可以从导航的 URL 查询中获取信息(即 session GUID)。当我注释掉“webView.navigationDelegate = self”行时,我的程序正确启动并加载了我的网页,但是当我包含它时,我的应用程序立即崩溃并出现以下错误:
" -[UIWebView setNavigationDelegate:]: unrecognized selector sent to instance
0x7f8251e058f0"
"*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[UIWebView setNavigationDelegate:]: unrecognized selector sent to
instance 0x7f8251e058f0'"
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
print("view did load")
webView.navigationDelegate = self
loadURL("http://mydomain/login.html")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
private func loadURL(targetURL: String){
if let url = NSURL(string: targetURL) {
let request = NSURLRequest(URL: url)
webView.loadRequest(request)
}
}
private func checkDomainGetSessionGUID(){
print ("we are here")
if let query = webView.URL?.query {
let queryArr = query.componentsSeparatedByString("&")
var parsedQuery : [String: String] = [:]
for field in queryArr {
let parts = field.componentsSeparatedByString("=")
parsedQuery.updateValue(parts[1], forKey: parts[0])
print ("key = \(parts[0]) and value = \(parts[1])")
}
}
else {
print ("didn't enter the if let")
}
}
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
print ("delegate")
checkDomainGetSessionGUID()
}
}
最佳答案
程序 1:
步骤 1:检查您在 Storyboard设计中使用的 UIElements。如果您使用 Web View 而不是使用 **WebKit View ,则可能会出现此错误。检查您的 IBOutlet 连接。
步骤 2:检查您的 IOS 部署目标,它必须是 IOS 11 及更高版本,因为 UIWebKit View 是在 IOS 8 中发布的,但它包含一个仅在 IOS 11 中修复的错误。因此,将您的部署目标设置为 11 及以上。
第 3 步:检查您的 info.plist 属性。以下属性应添加到列表中 App Transport Security Settings -> Allow Arbitrary Loads -> YES
程序 2:
如果您希望部署目标为 IOS 10 或低于 IOS 11 意味着您可以这样实现
步骤 1:使用其 swift ViewController 文件创建一个新的 UIViewController。并添加下面给定的代码来运行您的 URL:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string:"https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}}
关于ios - WKNavigationDelegate 应用程序在分配时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37996538/
我正在为 iOS 开发一个简单的 Web 包装器应用程序,但我在使用 WKWebView 和 WKNavigationDelegate 时遇到了一些问题。我想使用 WKNavigationDelega
我正在尝试创建一个 WebView 来加载一个 URL。 import UIKit class ViewController: UIViewController, WKNavigationDelega
我有一个实现了一些 WKNavigationDelegate 函数的 UIViewController,我想对这些函数中的逻辑进行单元测试。这是一个例子: func webView(_ webView
我正在尝试从 UIWebView 迁移到 WKWebView。 shouldStartLoadWithRequest 委托(delegate)方法我可以找到如下请求: - (BOOL)webView:
我正在编写一个 Swift 混合应用程序,我需要能够知道我的 WKWebView 何时完成请求加载。我正在尝试使用 WKNavigationDelegate 来实现这一点。但是,我可以让事件触发的唯一
我正在设置一个简单的 WKNavigationDelegate在我的动态框架中获取 WKWebView的默认用户代理字符串: @interface MyDelegate: NSObject @end
我需要一个 Swift 中的简单示例来说明我将如何实现 WKNavigationDelegate 方法 didReceiveServerRedirectForProvisionalNavigation
我创建了一个名为 JSBridge 的类,这个类实现了 WKNavigationDelegate,我在协议(protocol)方法中做了一些自定义的东西,然后调用另一个 UIViewControlle
有没有办法在不同的 webView 完成加载时发生不同的操作?如果我有 webView1 和 webView2,我如何创建两个独立的 webView(_ webView: WKWebView, did
我看到有很多关于 Swift 和 Objective-C 桥的问题,包括 this one , this one , 和 this one ....但到目前为止,他们都没有帮助我。 添加 WKNavi
我是一名优秀的程序员,十分优秀!