UIScrollView со встроенным UIWebView не прокручивается после удержания - PullRequest
2 голосов
/ 09 августа 2010

У меня есть UIWebView, который встроен в UIScrollView. Размер веб-вида изменен, так что представление прокрутки управляет всей прокруткой (мне нужен контроль над прокруткой).

В веб-представлении я отключил выбор пользователя через '-webkit-user-select: none;'

Все работает нормально, кроме одной раздражающей детали. Когда я удерживаю палец на содержании перед началом прокрутки в течение примерно секунды, scrollView не будет прокручиваться. Мое лучшее предположение, что это как-то связано с userSelection. Время примерно то же самое, что обычно требуется для копирования / вставки / увеличения, что обычно также отключает прокрутку.

У меня заканчиваются идеи, как это решить. Буду признателен за любую помощь!

Спасибо!

РЕДАКТИРОВАТЬ: Другой аспект проблемы заключается в том, что отсутствие прокрутки фактически вызывает JS-Eventhandler (щелчок, размышление, mouseup) внутри моего webView, что приводит к неожиданному поведению приложения. Пользователь кладет палец вниз, ждет, прокручивает, ничего не происходит, убирает палец, и это воспринимается как щелчок, который кажется неправильным с точки зрения пользователя.

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Этот вопрос больше не актуален. Начиная с iOS 5.0, UIWebView основан на реальном UIScrollView, а также предоставляет этот UIScrollView через свойство. Используйте это вместо этого.

И больше не связывайтесь с UIWebViews, встроенными в UIScrollViews. Документация явно рекомендует против этого.

Соответствующая документация

1 голос
/ 09 августа 2010

Я полагаю, что происходит то, что после этой короткой продолжительности просмотр прокрутки больше не интерпретирует касание как находящееся в его представлении, а вместо этого передает касание его представлениям содержимого.

Вы пытались отложить касания контента для просмотра прокрутки? По сути, это заставит просмотр прокрутки откладывать выполнение действий над событием касания и вместо этого кратко контролировать касание, а если касание движется, то оно распознает его как жест смахивания для прокрутки. Если он не двигается, он в конечном итоге передает прикосновение к своим подпредставлениям.

scrollView.delaysContentTouches = YES;

Думаю, даже тогда стандартное время задержки перед тем, как просмотр прокрутки пройдет события касания по цепочке респондента. Если вы удерживаете слишком долго, это будет естественно восприниматься как событие нажатия вниз, а не событие прокрутки.

...