我正试图在WKWebView中像这样的Material pull to refresh GIF一样刷新。因为我们想要包含已经有html导航栏的网站,所以我们需要在拖拽时保持网页视图的修复。我发现拉刷新(UIRefreshControl)到表视图和Web视图,但视图随着用户拖拽而下降。Swift中的材质“拉动刷新”?
我将代理设置为Web视图的scrollView属性并接收通知。当我靠近顶部拖动到0(垂直滚动视图偏移)时,我可以禁用滚动视图,启用平移手势。但要实际移动自定义微调视图,我需要再次触摸。
方法func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?)
不起作用,因为我有滚动视图。
private func gestures() {
self.panGesture = UIPanGestureRecognizer(
target: self,
action: "panGestureCaptured:"
)
self.panGesture!.enabled = false
self.webView.addGestureRecognizer(self.panGesture!)
}
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.contentOffset.y <= 0 {
self.view.layoutIfNeeded()
self.spinnerTopLayoutConstraint?.constant = -scrollView.contentOffset.y
}
}
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if scrollView.panGestureRecognizer.translationInView(scrollView.superview).y > 0 { // dragging down
if scrollView.contentOffset.y == 0 {
self.webView!.scrollView.scrollEnabled = false
// self.webView!.scrollView.canCancelContentTouches = true
self.panGesture!.enabled = true
// self.refreshWebView()
}
self.showNavigationItems()
} else { // dragging up
self.hideNavigationItems()
}
}
只是一个想法:WebView的滚动视图已经有一个泛识别器(webView.scrollView.panGestureRecognizer),所以你可以听这一个(与addTarget)并禁用滚动视图上的弹跳。这样您就不需要禁用/启用平移识别器。 – Darko
它工作!非常感谢你@Darko –
不客气。我已添加评论作为答案,请将您的问题标记为已回答。 – Darko