UIScrollView внутри UIScrollView - игнорировать касания прокрутки в границах текстового представления?

У меня один UIScrollView внутри другого UIScrollView, оба прокручиваются по вертикали. У меня возникла проблема, из-за которой, когда я пытаюсь прокрутить представление внутренней прокрутки, прикосновения сразу же улавливаются представлением внешней прокрутки. Мне нужны штрихи во внутреннем представлении прокрутки, чтобы они обрабатывались исключительно им, а scrollViewDidScroll НЕ вызывались в родительском представлении прокрутки.

Я пробовал всевозможные вещи, создавая подклассы для просмотра прокрутки и переопределив hitTest:withEvent, установив canCancelContentTouches, установив exclusiveTouch, вообще ничего не работало. Методы scrollViewDidScroll запускаются сначала во внутреннем, а затем во внешнем.

Как я могу эффективно отключить прикосновение после первого просмотра прокрутки и не передать его по цепочке респондента во внешний вид прокрутки?

(К вашему сведению: иерархия такова, что между ними находится дочерний контроллер представления, поэтому внешнее представление прокрутки содержит контроллер дочернего представления, который, в свою очередь, содержит представление внутренней прокрутки).


person Luke    schedule 22.10.2014    source источник


Ответы (1)


Apple определенно НЕ препятствует использованию UIScrollView внутри UIScrollView. Это на самом деле в документе:

вашему приложению не нужно ничего делать для поддержки прокрутки вложенности. Он поддерживается и предоставляется по умолчанию.

https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/UIScrollView_pg/NestedScrollViews/NestedScrollViews.html.

Если вы хотите отключить прокрутку родительского представления прокрутки, вы, вероятно, можете отправить уведомление от дочернего элемента и установить isScrollEnabled в родительском.

person yuji    schedule 05.05.2017