Подтвердить что ты не робот

UIGestureRecognizer получает прикосновение, но перенаправляет его на UIControl.

Как бы вы разрешили UIGestureRecognizer UIView получать событие касания, но также убедиться, что другое, подстилающее/накладывающееся UIView также получает такое же событие касания?

Допустим, у меня есть следующее представление: hierachie: view hierachie scribble

Представления A (синие) и B (красные) являются одновременно областями одного и того же супервизора (серый). Другими словами, они оба являются братьями и сестрами, и порядок решает, какой из них охватывает другой.

Вариант 1: View B (красный) имеет регулярный UIButton в качестве подзапроса. Вариант 2: Вид A (синий) имеет обычный UIButton в качестве подзапроса.

Данный вариант 1 для объяснений: В представлении A (синий) есть UITapGestureRecognizer (или, возможно, даже больше, другие UIGestureRecognizers). Каким будет самый элегантный подход, чтобы убедиться, что UIButton получает все касания в своей области, но также вид A (синий) получает эти штрихи на его UITapGestureRecognizer?

Если это возможно, решение не должно включать расширение класса UIButton и переадресацию вручную любых событий из самой кнопки. Представьте, что просмотр B будет содержать намного больше элементов управления, а не только кнопку. Все эти элементы управления должны каким-то образом разрешить виду A получать штрихи на UIGestureRecognizer.

Я представил два варианта, поскольку мне все равно, какой из этих представлений (A или B) на первом месте, пока оба получают штрихи.

Все мои подходы до сих пор круто доходили до тупиков. Может быть, обычная цепочка ответчиков будет хорошим решением? Я продолжаю думать, что должно быть элегантное решение во всем стеке UIKit/UIEvent/UIResponder.

4b9b3361

Ответ 1

Вы пробовали с этим?

cancelsTouchesInView Логическое значение, влияющее на то, попадают ли прикосновения в представление при распознавании жестов.

@property(nonatomic) BOOL cancelsTouchesInView