UIButton в представлении, которое имеет UITapGestureRecognizer

У меня есть представление с a UITapGestureRecognizer. Таким образом, когда я касаюсь на представлении, другое представление появляется выше этого представления. Это новое представление имеет три кнопки. Когда я теперь нажимаю на одной из этих кнопок, я не получаю действие кнопок, я только получаю действие жеста касания. Таким образом, я не могу использовать эти кнопки больше. Что я могу сделать для получения событий до этих кнопок? Странная вещь состоит в том, что кнопки все еще выделяются.

Я не могу только удалить UITapGestureRecognizer после того, как я получил, это - касание. Поскольку с ним новое представление может также быть удалено. Средство я хочу поведение как полный экран смотри, управляет.

180
задан TheNeil 14 May 2019 в 19:58
поделиться

1 ответ

Вы можете установить свой контроллер или представление (в зависимости от того, что создает распознаватель жестов) в качестве делегата UITapGestureRecognizer. Затем в делегате вы можете реализовать -gestureRecognizer:shouldReceiveTouch:. В своей реализации вы можете проверить, принадлежит ли прикосновение вашему новому подпросмотру, и если да, то проинструктировать распознаватель жестов игнорировать его. Что-то вроде следующего:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // test if our control subview is on-screen
    if (self.controlSubview.superview != nil) {
        if ([touch.view isDescendantOfView:self.controlSubview]) {
            // we touched our control surface
            return NO; // ignore the touch
        }
    }
    return YES; // handle the touch
}
254
ответ дан 23 November 2019 в 06:11
поделиться