iOS: не работает распознаватель жестов

У моего табличного представления есть текстовое поле выше этого. И всякий раз, когда текстовое поле фокусируется, регистрируется жест смахивания. Когда жест смахивания распознается, клавиатура отклоняется. Код работает для всех жестов, кроме жеста смахивания вверх не работает. Это мой код

swipe = [[UISwipeGestureRecognizer alloc]
         initWithTarget:self action:@selector(dismissKeyboard)];

[swipe setDirection:UISwipeGestureRecognizerDirectionUp];

Может кто-нибудь, пожалуйста, дайте мне знать, если есть какие-либо проблемы?

3 ответа

Есть ли шанс, что вы столкнетесь с одним из жестов прокрутки? Кажется маловероятным, если другие ваши жесты работают, но, возможно, стоит хотя бы попытаться использовать gestRecognizer:shouldRecognizeSim одновременно ouslyWithGestureRecognizer: метод в протоколе UIGestureRecognizerDelegate.

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

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

for (UIGestureRecognizer *gesture in self.scrollView.gestureRecognizers)
{
    [gesture requireGestureRecognizerToFail:myGesture];
}

Единственные случаи, когда у меня были проблемы с этим, - это представления типа UITextView, которые удаляют и добавляют жесты, когда вы входите и выходите из режима редактирования, так что это хлопотно.

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

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

Другие вопросы по тегам