我正試圖在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