2013-08-27 5 views
7

Ho uno UIButton (il "pulsante Indietro") nell'angolo in alto a sinistra di un'applicazione iPad che congela un controller di visualizzazione. Ho scoperto che se si tocca questo pulsante un po 'troppo in alto, è possibile attivare entrambi il pulsante e iniziare a tirare verso il basso il riquadro delle notifiche allo stesso tempo. Quando ciò accade, il mio -viewWillDisappear viene eseguito e interrompe le animazioni nella vista, ma la vista non viene effettivamente ignorata. Ovviamente, il riquadro delle notifiche non scende fino in fondo, quindi il risultato netto sembra che le mie animazioni si siano bloccate e che anche il pulsante back non sia andato a buon fine.Comportamento strano con pulsante vicino al pulldown del centro di notifica su iPad

La soluzione più ovvia sarebbe quella di spostare semplicemente il tasto giù un po ', ma come che è indesiderabile per motivi di layout, io sono curioso di sapere se:

  1. qualcuno ha mai visto questo comportamento prima.
  2. Se è un comportamento ben definito, e in tal caso, dove Apple lo descrive.
  3. Esistono soluzioni tecniche?

EDIT: in realtà sembra meno di un problema, dopo tutto. È venuto fuori che è il mio -applicationWillResignActive che viene chiamato, non -viewWillDisappear. Sembra ancora male, ma almeno il comportamento è ben definito. Non sto attivando affatto il mio pulsante Home, semplicemente tirando giù il riquadro delle notifiche.

+0

Questo è abbastanza strano. Viene anche chiamato viewWillAppear? – ffarquet

+0

Ah no, vedi modifica. –

risposta

1

Ho fatto un UIViewController che ha un'animazione temporizzata (come un banner pubblicitario) in corso, e portando il riquadro di notifica verso il basso non lo interrompe fino a quando il pannello non viene completamente rivelato.

Forse hai a che fare con le animazioni su -applicationWillResignActive: e -applicationDidBecomeActive:, come mettere in pausa e riprenderli.

È possibile ricevere le notifiche direttamente sul tuo UIViewController (invece di trattare con loro su di voi AppDelegate) aggiungendo il seguente codice al tuo -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

Questo è davvero curioso! Continuerò a esaminarlo. Questo sembra un problema piuttosto sottile, potrebbe essere qualcosa di particolare delle animazioni che sto usando (è il codice oggetto di terze parti, sfortunatamente). –