У меня есть представление, и на нем программно нарисован круг. Также у меня есть распознаватель жестов, делегат которого проверяет, должен ли он получать прикосновение (должно быть, если касание было сделано на этом круге).
- (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
, который вызовет логику супервизора, но мне интересно, есть ли более простой способ.
NO
, распознаватели базовых представлений не вызвались и ничего не произошло. - person efpies   schedule 05.03.2013