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

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

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

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

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

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

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

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

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

35
задан Till 30 May 2011 в 10:43
поделиться