WKWebView滚动视图代理

4
我有几个页面视图,每个都有一个webview。所有引用都很强。除了webview scrollview的使用和设置它的委托之外,一切正常。我使用它来监听滚动事件。
当设置webview.scrollview的委托并弹出当前视图时,会发生这种情况:
    objc[37721]: Cannot form weak reference to
instance (0x7fb988fe2800) of class WebViewPageController.
    It is possible that this object was over-released,
or is in the process of deallocation.

我在 XCode 的堆栈跟踪中注意到这发生在:

WKWebView dealloc
WKWebView _updateDelegate
UIScrollView setDelegate

我该怎么做才能解决这个问题?在使用UIWebView时,这很好用,但现在升级到WKWebView后出现了这种情况。有没有一种新的方式来监听滚动事件?
1个回答

16

在你的视图控制器中实现deinit方法,并将滚动视图的委托设置为nil:

deinit {
    webView.scrollView.delegate = nil
}

1
我之前使用的是Objective-C,最终通过dealloc方法将委托设置为零。所以这确实是正确的答案,很好。这是WKWebView的一个问题,因为UIWebView的同一实现并不需要它。 - mthandr
解决了我的问题。 - leizh00701

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接