在UIViewController中,我实例化了一个WKWebView,并将视图控制器设置为WKWebiew滚动视图的委托:
class MyViewController: UIViewController, UIScrollViewDelegate {
var webView : WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView = WKWebView(frame: self.view.frame)
view = webView
webView.loadHTMLString("<h1>hello</h1>", baseURL: NSURL(string: "http://www.google.com")!)
webView.scrollView.delegate = self
}
func scrollViewDidScroll(scrollView: UIScrollView) {
println("didScroll")
}我的问题是,一旦创建了WKWebView,scrollViewDidScroll就会被调用(即用户实际上没有滚动任何东西)。
为什么会这样?我怎样才能防止它呢?
发布于 2020-01-24 13:25:04
在scrollViewWillBeginDragging方法中将布尔值设置为true,该方法仅在用户滚动时调用,并且不会被WKWebview自动调用
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
scrollByDragging = true
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if !scrollByDragging{
UIView.animate(withDuration: 0.01) {
scrollView.setContentOffset(.zero, animated: true)
}
}
}发布于 2017-04-03 23:13:20
如果您使用的是contentOffset,您将能够检测到用户何时滚动。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y >= 0 {
print("didScroll")
}
}如果您的UIScrollView在UINavigationController中,contentOffset.y将从-44开始,但实际上使用0就可以了。
https://stackoverflow.com/questions/28670483
复制相似问题