Имам изглед и върху него програмно е начертан кръг. Също така имам разпознавател на жестове, който делегат проверява дали трябва да получи докосване (трябва, ако докосването е направено върху този кръг).
- (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
, което ще извика логиката на superview, но се чудя дали има по-лесен начин.
NO
, разпознавателите на основните изгледи не се обадиха и нищо не се случи. - person efpies   schedule 05.03.2013