UITapGestureRecognizer ничего не делает - PullRequest
10 голосов
/ 25 июня 2011

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

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

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

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

Ответы [ 3 ]

25 голосов
/ 03 июля 2012

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

view.userInteractionEnabled = YES;
7 голосов
/ 25 июня 2011

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

Попробуйте использовать делегата с <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 голосов
/ 20 августа 2011

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

recognizer.delegate = self;

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

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

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

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