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
прийти к такому же выводу). Если вы не хотите вмешиваться в жесты дочернего представления, будьте настолько агрессивны, насколько это возможно, позволяя вашему провалу. Возможно, это не проблема с жестом смахивания, но это возможно, если вы обнаружите, что ваши жесты в итоге заметно изменяют поведение дочернего представления.
Но я подозреваю, что вам, вероятно, нужно просто выяснить, какие виды имеют жесты, которые мешают вашим, и заставить их требовать, чтобы ваши сначала потерпели неудачу.