UITapGestureRecognizer ничего не делает

У меня есть приложение, которое отображает страницу текста с возможностью нажатия кнопки или прокрутки в режиме просмотра или отступления на разных страницах. В окне контейнера имеется два UISwipeGestureRecognizers, для прокрутки влево и прокрутка вправо. Никаких проблем с этими жестами. Но теперь я пытаюсь добавить UITapGestureRecognizer в другое представление, предоставляя возможность, похожую на iBooks или приложение Kindle, нажимать налево, чтобы вернуться, право идти вперед. Ничто из того, что я делаю, не может заставить огонь стрелять. Нет намека на то, что он когда-либо срабатывает, даже если я помещу жест в мой верхний вид и отключу другие жесты.

Контроллер представления реализует UIGestureRecognizerDelegate, хотя мне не нужно реализовывать методы делегирования. Я попытался реализовать shouldReceiveTouch: без успеха.

Вот фрагмент кода, в котором я создаю и присоединяю распознаватель жестов:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureTurnPage:)];
[self.view addGestureRecognizer:recognizer];
[recognizer release];

Ответ 1

Попробуйте это в представлении, в котором вы добавляете распознаватели жестов:

view.userInteractionEnabled = YES;

Ответ 2

Вы упомянули, что вы пробовали это, но на всякий случай пропустите его снова.

Попробуйте использовать делегат с <UIGestureRecognizerDelegate> в заголовке, а затем установите делегат:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureTurnPage:)];
[self.view addGestureRecognizer:recognizer];
recognizer.delegate = self;
[recognizer release];

Затем реализуем этот метод:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {
    return YES;
}

Затем используйте отладчик или переместите NSLog в указанный выше метод, а также tapGestureTurnPage:, чтобы узнать, вызываются ли эти методы.

Ответ 3

Добавьте это, где вы инициализируете жест:

recognizer.delegate = self;

и добавьте это в класс "self": ​​

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

Это позволяет мне распознавать жесты в UIWebView, а UIWebView по-прежнему будет реагировать на краны. (который я хотел - вы не можете)