2013-08-27 3 views
7

Mam UIButton (przycisk "Wstecz") w lewym górnym rogu aplikacji na iPad, która powoduje odrzucenie kontrolera widoku. Odkryłem, że jeśli naciśniesz ten przycisk nieco zbyt wysoko, możesz zarówno aktywować przycisk, jak i jednocześnie uruchomić panel powiadomień. Gdy tak się stanie, mój -viewWillDisappear zostanie wykonany i zatrzyma animacje w widoku, ale widok nie zostanie w rzeczywistości odrzucony. Oczywiście, okienko powiadomień nie sprowadza się do końca, więc wynik netto wygląda na to, że moje animacje uległy awarii, a także przycisk Wstecz również się nie powiódł.Dziwne zachowanie z przyciskiem w pobliżu centrum powiadomień rozwijanego na iPadzie

Oczywistym rozwiązaniem byłoby po prostu przesunąć przycisk w dół trochę, ale jako, że jest niepożądana ze względu na układ, jestem ciekawy, czy:

  1. ktoś kiedykolwiek widział ten problem wcześniej.
  2. Jeśli jest to dobrze zdefiniowane zachowanie, a jeśli tak, to gdzie Apple to opisuje.
  3. Czy są znane miejsca pracy?

EDYCJA: właściwie wygląda na mniejszy problem. Okazuje się, że to mój -applicationWillResignActive, który się nazywa, a nie -viewWillDisappear. Nadal wygląda źle, ale przynajmniej zachowanie jest dobrze zdefiniowane. W ogóle nie aktywuję mojego przycisku domowego, tylko ściągam okienko powiadomień.

+0

To dość dziwne. Czy wywoływana jest również viewWillAppear? – ffarquet

+0

Ah nie, zobacz edycję. –

Odpowiedz

1

Zrobiłem UIViewController, który ma animację w czasie (jak reklama banerowa), a przynosząc okienko powiadomień nie zatrzymuje go, dopóki panel jest w pełni ujawniony.

Może masz do czynienia z animacjami na -applicationWillResignActive: i -applicationDidBecomeActive:, jak wstrzymywanie i wznawianie ich.

można odbierać tych powiadomień bezpośrednio na UIViewController (zamiast zajmować się nimi na ciebie AppDelegate) dodając następujący kod do -viewDidLoad:

// Add observers 
[[NSNotificationCenter defaultCenter]addObserver:self 
             selector:@selector(pauseAnimations:) 
              name: UIApplicationWillResignActiveNotification 
              object:nil]; 

[[NSNotificationCenter defaultCenter]addObserver:self 
             selector:@selector(resumeAnimations:) 
              name:UIApplicationDidBecomeActiveNotification 
              object:nil]; 
+0

To naprawdę ciekawe! Będę się nad tym zastanawiać. Wydaje się, że jest to dość subtelny problem, może być czymś szczególnym dla animacji, których używam (to niestety). –