Как передать событие TouchUpInside в UIButton, не передавая его в родительские представления? - PullRequest
0 голосов
/ 22 января 2012

У меня есть UIScrollview с включенной подкачкой страниц. В этом виде прокрутки есть 3 вида (страницы). В родительском представлении прокрутки есть жест касания, который показывает и скрывает панель навигации вверху.

Проблема: На одной из страниц я хочу добавить кнопки. Но проблема в том, что всякий раз, когда я нажимаю на эти кнопки, также запускается метод отображения / скрытия панели навигации. Как лучше всего передать касание только этим кнопкам, а не родительскому представлению вида прокрутки?

1 Ответ

1 голос
/ 22 января 2012

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

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

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch {

    UIView *gestureView = recognizer.view;
    // gestureView is the view that the recognizer is attached to - should be the scroll view

    CGPoint point = [touch locationInView:gestureView];
    UIView *touchedView = [gestureView hitTest:point withEvent:nil];
    // touchedView is the deepest descendant of gestureView that contains point

    // Block the recognizer if touchedView is a UIButton, or a descendant of a UIButton
    while (touchedView && touchedView != gestureView) {
        if ([touchedView isKindOfClass:[UIButton class]])
            return NO;
        touchedView = touchedView.superview;
    }
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...