Событие UIGestureRecognizer между всплывающим UIAlertView - PullRequest
1 голос
/ 15 августа 2011

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

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

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

На каждом View CI есть распознаватель жестов касания и распознаватель жестов длинного нажатия.На жесте касания я отображаю UIAlertView.

Так вот в чем проблема:

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

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

Ответы [ 2 ]

1 голос
/ 16 августа 2011

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

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

НТН,

Акшай

1 голос
/ 16 августа 2011

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

...