Я пытаюсь добиться увеличения, чтобы обновить WKWebView, как в этом Material pull to refresh GIF. Поскольку мы хотим включить веб-сайты, на которых уже есть панель навигации html, нам нужно сохранить исправление веб-страницы при перетаскивании вниз. Я нашел pull to refresh (UIRefreshControl) для просмотра таблиц и веб-представлений, но представления уменьшаются по мере того, как пользователь тащит вниз.Материал «тянуть, чтобы освежить» в Свифт?
Я установил делегат для прокрутки свойства просмотра веб-представления и получения уведомлений. Когда я перетаскиваю вверху и добираюсь до 0 (смещение в вертикальном прокрутке), я могу отключить просмотр прокрутки, включить жест панорамы. Но для того, чтобы на самом деле переместить пользовательский вид Spinner, мне нужно второе прикосновение.
Метод 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