Событие UIGestureRecognizer между всплывающим окном UIAlertView

У меня действительно странная проблема, и ее может быть трудно объяснить, но я ценю любую помощь или предложения по этому поводу.

У меня есть базовое представление (представление B), в котором есть UIGestureRecognizer, который обнаруживает левые и правые жесты.

Поверх представления B у меня есть несколько небольших представлений (представление C), которые покрывают весь вид. (Думайте об этом как о календаре).

На каждом представлении C у меня есть распознаватель жестов касания и распознаватель жестов длительного нажатия. При касании я показываю UIAlertView.

Итак, вот проблема:

Я могу нажать View C, а затем провести View B, и событие swipe View B сработает до отображения UIAlertView. Это приводит к сбою моего приложения, потому что, когда View B удаляется с помощью события swipe, и поскольку View C находится поверх View B, они также удаляются, а alertView: clickedButtonAtIndex: вообще не достигается.

Есть ли у кого-нибудь идеи о том, как предотвратить пролистывание до отображения UIAlertView? Спасибо за помощь!


person Matt W.    schedule 15.08.2011    source источник


Ответы (2)


Вы можете попробовать создать глобальную переменную BOOL в файле .h, которая сообщает, зарегистрировано ли событие касания или нет. В методе, который вы вызываете, когда зарегистрировано касание, установите для переменной значение NO, а в вашем методе, который вы вызываете, когда зарегистрировано касание, проверьте, является ли переменная BOOL YES или NO, и если это NO, это означает касание был зарегистрирован, и вам не следует использовать метод свайпа. Затем просто установите для переменной BOOL значение YES после того, как UIAlertView будет подано в отставку. Надеюсь, это поможет!

person msgambel    schedule 15.08.2011

Как вы сказали, представления C полностью покрывают представление B. Следовательно, жесты смахивания на B не должны регистрироваться, если не отображается предупреждение. Вы можете добавить распознаватель жестов B в (void)didPresentAlertView:(UIAlertView *)alertView;.

И затем в alertView:clickedButtonAtIndex: вы можете удалить распознаватель жестов B.

ХТХ,

Акшай

person Akshay    schedule 16.08.2011