Как разрешить UIGestureRecognizer
UIView
получать событие касания, но при этом убедиться, что другой, нижележащий/наложенный UIView
также получает это же событие касания?
Допустим, у меня есть следующий вид-иерахия:
Виды A (синий) и B (красный) являются подвидами одного и того же супервида (серого). Другими словами, они оба являются родными братьями и сестрами, и порядок решает, какой из них покрывает другой.
Вариант 1:
Вид B (красный) имеет обычный UIButton
в качестве своего вложенного вида.
Вариант 2:
Вид A (синий) имеет обычный UIButton
в качестве вложенного вида.
Для пояснения приведен вариант 1:
Вид A (синий) имеет UITapGestureRecognizer
(или, возможно, даже больше, другие UIGestureRecognizers). Каким будет наиболее элегантный подход, чтобы убедиться, что UIButton
получает все прикосновения к своей области, а вид A (синий) получает эти прикосновения на свой UITapGestureRecognizer
?
Если это возможно, то решение не должно включать расширение класса UIButton
и ручную пересылку событий от самой кнопки. Представьте, что вид B будет содержать гораздо больше элементов управления, а не только кнопку. Все эти элементы управления должны каким-то образом позволять виду A получать касания на свой UIGestureRecognizer
.
Я предоставил два варианта, поскольку мне все равно, какой из видов (A или B) будет первым, лишь бы оба получали прикосновения.
Все мои подходы до сих пор резко заходили в тупик. Может быть, пользовательская цепочка ответчиков была бы хорошим решением? Я продолжаю думать, что должно быть элегантное решение в рамках всего стека UIKit
/UIEvent
/UIResponder
.