Как отменить UIGestureRecognizer, если нажата кнопка подпредставления

Я изо всех сил пытаюсь добиться желаемого поведения от распознавателей жестов, в частности отмены определенных жестов, если другие сработали.

У меня есть scrollView для разбиения по страницам и несколько подпредставлений на каждой странице. Я добавил распознаватель жестов касания для прокрутки к следующей или предыдущей странице, если пользователь касается справа или слева от страницы.

    // Add a gesture recogniser turn pages on a single tap at the edge of a page
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureHandler:)];
    tapGesture.cancelsTouchesInView = NO;
    [self addGestureRecognizer:tapGesture];
    [tapGesture release];

и мой обработчик жестов:

- (void) tapGestureHandler:(UIGestureRecognizer *) gestureRecognizer {
    const CGFloat kTapMargin = 180;

    // Get the position of the point tapped in the window co-ordinate system
    CGPoint tapPoint = [gestureRecognizer locationInView:nil];

    // If the tap point is to the left of the page then go back a page
    if (tapPoint.x > (self.frame.size.width - kTapMargin)) [self scrollRectToVisible:pageViewRightFrame animated:YES];

    // If the tap point is to the right of the page then go forward a page
    else if (tapPoint.x < kTapMargin) [self scrollRectToVisible:pageViewLeftFrame animated:YES];
}

Все работает хорошо, за исключением тех случаев, когда у меня есть подпредставление на страница, на которой есть кнопки. Я хочу иметь возможность игнорировать касание, чтобы перевернуть страницу, если пользователь касается кнопки во вложенном представлении, и я не могу понять, как это сделать.

Ура

Дэйв

17
задан Magic Bullet Dave 3 May 2011 в 17:00
поделиться