Вперед/переход через UIGesture (проведите пальцем) к представлению родственного элемента

Допустим, следующая установка:

введите здесь описание изображения

Существует только горизонтальная прокрутка, прозрачный UIScrollView (прямоугольник с голубоватым фоном и красной рамкой) и бесконечное количество экземпляров UIImageView (красноватые квадраты), являющихся подпредставлениями одного и того же UIView (self.view).

UIScrollView выдвигается вперед

[self.view bringSubviewToFront:scrollView]

в содержащем UIViewController.

Должны быть достигнуты следующие результаты: UIScrollView должен получать жесты смахивания влево/вправо для горизонтальной прокрутки, тогда как UIImageViews, скрытый UIScrollView, должен получать жесты смахивания с направлением вверх/вниз, которые добавляются следующим образом:

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUpGestureHandler:)];
swipeUpGesture.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown;
[imageView addGestureRecognizer:swipeGesture];

Это работает, когда UIImageView не закрыто UIScrollView, но, очевидно, не работает, когда UIScrollView находится перед указанными представлениями.

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

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

Любые подсказки приветствуются, спасибо.


person Timo Josten    schedule 24.11.2014    source источник


Ответы (1)


Я нашел решение этой проблемы. Хотя мне не удалось перенаправить жесты смахивания вверх/вниз на представления изображений за прокруткой, теперь я добавил распознаватели жестов с направлением вверх/вниз в прокрутку. В действиях распознавателей жестов я определяю точку жеста в окне и проверяю первое представление окна для этой точки с нулевым событием. В пользовательском представлении прокрутки я перезаписал сообщение hittest, чтобы вернуть NO с пустым событием, чтобы соответствующее изображение в конечном итоге стало идентификатором. Как только я получил изображение, лежащее за прокруткой в ​​​​точке жеста, я смог выполнить соответствующее действие с моим изображением.

Я не уверен, что это лучшее решение для этой проблемы, однако мне не удалось создать лучшее после нескольких часов исследований и экспериментов. Эта установка может быть немного необычной и поэтому сложной. Ваш вклад по-прежнему ценится, если у вас есть что добавить.

person Timo Josten    schedule 25.11.2014