ios - WKWebView.loading 返回无法识别的选择器

标签 ios xcode swift unrecognized-selector

我运行一个如下所示的计时器:

else if label == "Instagram" && defaults.boolForKey("instagramswitch") {
            activeWebview.loadRequest(request)
            let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
            dispatch_after(dispatchTime, dispatch_get_main_queue(), {
                self.i = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("instagram:"), userInfo: activeWebview, repeats: true)
            })
}

函数看起来像这样:

func instagram(webview: WKWebView) {
    if webview.loading == false {
        let code: String = "document.getElementsByClassName('2yal _csflf').item(3).click();"
        webview.evaluateJavaScript(code, completionHandler: nil)
        let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
        dispatch_after(dispatchTime, dispatch_get_main_queue(), {
            self.i = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("instagramloaded:"), userInfo: webview, repeats: true)
        })
    }
}

我在这一行收到错误 - “if webview.loading == false {”,错误是:

2016-04-10 15:16:53.679 PF 0.5[878:241174] -[__NSCFTimer isLoading]: 无法识别的选择器发送到实例 0x145a03fe0

我们将不胜感激 :) 我认为这是因为我调用了 webview.loading 但我不知道为什么会导致崩溃。

最佳答案

你应该像下面这样修改方法,

func instagram(timerObject: NSTimer) {
    if let webview = timerObject.userInfo as! WKWebView{
    if webview.loading == false {
        let code: String = "document.getElementsByClassName('2yal _csflf').item(3).click();"
        webview.evaluateJavaScript(code, completionHandler: nil)
        let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
        dispatch_after(dispatchTime, dispatch_get_main_queue(), {
            self.i = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("instagramloaded:"), userInfo: webview, repeats: true)
        })
    }
  }
}

因为参数中的对象是作为 NSTimer 对象接收的,您必须从方法调用中取出作为 userInfo 对象发送的数据。希望这会有所帮助。

关于ios - WKWebView.loading 返回无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36525980/

相关文章:

objective-c - 使用 Objective-C 类别扩展 Swift 类

ios - 如何使用 Swift 使用 TheAmazingAudioEngine 播放音频文件?

ios - MVC 和导入 UIKit

ios - 运行一个循环直到 UIPanGestureRecognizer 结束

ios - Xcode Parse Query button 从单元格中删除文本和照片

ios - 将 XCTestsmeasure() 限制为仅运行一次

ios - Swift 中使用 numberOfRowsInSection 的 void 函数出现意外的非 void 返回值

iphone - 是否可以为 UIImage 设置动画?

XCode 在项目问题中使用 XIB 查找并替换

ios - 如何获取 NSFetchedResultsController Swift 部分中的对象数