У меня есть вид, и на нем программно изображен круг. Также у меня есть распознаватель жестов, который делегирует чеки, если он должен получить прикосновение (это должно быть, если кран был сделан на этом круге).Проход наружных распознавателей, если внутренний не получил прикосновение
- (void)awakeFromNib
{
[super awakeFromNib];
circleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleHighlighted:)];
[self addGestureRecognizer:circleTapRecognizer];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint hit = [touch locationInView:self];
if (gestureRecognizer == circleTapRecognizer) {
BOOL hitsCircle = hit.x >= CGRectGetMidX(self.bounds) - self.circleRadius &&
hit.x <= CGRectGetMidX(self.bounds) + self.circleRadius &&
hit.y >= CGRectGetMidY(self.bounds) - self.circleRadius &&
hit.y <= CGRectGetMidY(self.bounds) + self.circleRadius;
return hitsCircle;
}
return YES;
}
Но я хочу, чтобы супервизор получал прикосновение, если кран был сделан на месте из этого круга. Как я могу это сделать? Конечно, я могу вызвать вызов метода делегата с именем tappedNotOnCircle
, который вызовет логику супервизора, но мне интересно, есть ли более простой способ.
рад видеть, что вы выбрали версию без GestureRecognizer. Держите вещи простыми. :) Не могли бы вы ответить, почему вы передумали? (Только для моего интереса) –
@MarkKryzhanouski Потому что распознаватель жестов не работал. В один момент, когда метод в теме возвращал «НЕТ», распознаватели базовых представлений не вызывали и ничего не происходило. – efpies