/ / Zdarzenie UIGestureRecognizer między wyskakującym okienkiem UIAlertView - iPhone, iOS, Uialertview, UigestureRecognizer

Wydarzenie UIGestureRecognizer między wyskakującym okienkiem UIAlertView - iphone, ios, uialertview, uigesturerecognizer

Mam naprawdę dziwny problem i może być trudny do wyjaśnienia, ale doceniam wszelką pomoc lub sugestie na ten temat.

Mam widok podstawowy (Widok B), który ma UIGestureRecognizer, który wykrywa lewy i prawy gest.

Oprócz widoku B mam kilka małych widoków (widok C) obejmujących cały widok. (Pomyśl o tym jak o kalendarzu).

Na każdym Widoku C mam rozpoznawanie gestów dotknięcia i rozpoznawanie gestów długiego naciśnięcia. Na geście stuknięcia wyświetlam UIAlertView.

Oto problem:

Mogę stuknąć Widok C, a następnie przeciągnąć Widok B iZdarzenie przesunięcia widoku B jest uruchamiane przed wyświetleniem UIAlertView. To powoduje awarię mojej aplikacji, ponieważ kiedy widok B jest usuwany ze zdarzeniem przeciągnięcia, a ponieważ widok C znajduje się nad widokiem B, są one również usuwane, a alertView: clickedButtonAtIndex: nie jest w ogóle osiągany.

Czy ktoś ma jakieś pomysły, jak zapobiec przeciągnięciu przed wyświetleniem UIAlertView? Dzięki za pomoc!

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz spróbować stworzyć globalny BOOL zmienna w pliku .h informująca, czy zdarzenie tap jest zarejestrowane, czy nie. W metodzie wywoływanej po zarejestrowaniu kranu ustaw zmienną na NO, a w metodzie wywołujesz po zarejestrowaniu machnięcia, sprawdź, czy BOOL zmienna to YES lub NO, a jeśli tak NO, oznacza to, że kran został zarejestrowany i nie należy kontynuować korzystania z metody przeciągania. Następnie po prostu ustaw BOOL zmienna na YES po UIAlertView został zrezygnowany. Mam nadzieję, że to pomaga!


1 dla odpowiedzi nr 2

Jak już powiedziałeś, widoki C całkowicie pokrywają widok B. Dlatego też gesty machnięcia na B nie powinny być rejestrowane, dopóki alarm nie zostanie wyświetlony. Możesz dodać rozpoznawanie gestów B do (void)didPresentAlertView:(UIAlertView *)alertView;.

A potem w alertView:clickedButtonAtIndex:, możesz usunąć rozpoznawanie gestów B.

HTH,

Akshay