У меня есть UIView («контейнерный вид»), который содержит несколько «подпунктов». Я хочу добавить UITapGestureRecognizer в представление контейнера, так что он активируется, когда я касаюсь области внутри контейнера, но вне подзонов.Исключить subviews из UIGestureRecognizer
В настоящий момент, касаясь в любом месте контейнера, в том числе внутри подзонов, активируется распознаватель жестов.
Реализация выглядит примерно так: В контроллере:
ContainerView *containerView = [[ContainerView alloc] initWithSubViews:array];
UITapGestureRecognizer *tap = [UITapGestureRecognizer alloc] initWithTarget:self action:@selector(someSelector)];
[containerView addGestureRecognizer:tap];
[self.view addSubView:containerView];
В ContainerView.m
-(id)initWithSubviews:(NSArray *)array {
for (subView *s in array) {
[self addSubView:s];
}
return self;
}
Я думаю, что проблема возникает потому, что жест распознаватель добавляется после того, как подвиды. Если это так, то решение потребует разбить метод initWithSubViews на два отдельных, которые я бы предпочел избежать.
Спасибо
Это дорогостоящий и волосатый, если необходимо проверить множество подзапросов. – CodaFi
yup..I смотрю .. Я не вижу никаких других хороших решений .. если у вас есть, не стесняйтесь делиться .. :) –