Esiste una soluzione pulita per ottenere un callback o un evento sul controller di visualizzazione che viene rimosso (spuntato) da un interactivePopGestureRecognizer
?Getting interactivePopGestureRecognizer respinge callback/evento
Per essere chiari, ho bisogno di un metodo esplicito per richiamare il controller più in alto (e nessun altro) prima che il controller venga scoccato da questo riconoscitore di gesti. Non voglio ottenere l'evento sul controller di navigazione e inviare l'evento al controller appropriato e non voglio usare viewWillAppear
o viewWillDissapear
...
La cosa più vicina che ho è aggiungere una coppia target/selector a il gesto ha solo 2 problemi. Per prima cosa non riesco a ottenere informazioni dirette se il controller verrà rimosso o meno (UIGestureRecognizerStateEnded
verrà attivato in ogni caso). Secondo dopo che il controller è stato rimosso, devo rimuovere il target dal riconoscitore.
Il motivo è che ho alcuni controller che devono inviare alcune informazioni ai propri delegati. Con i pulsanti "done" e "cancel" l'evento viene attivato, i metodi delegate vengono richiamati e quindi il controller viene spuntato. Ho più o meno bisogno che succeda con il minor numero possibile di modifiche al codice.
Un'altra situazione su questo gesto è la possibilità di lanciare una vista di avviso e di ripristinare l'azione: C'è un modo di mostrare la vista di avviso quando questo gesto finisce chiedendo come "sei sicuro di voler cancellare il tuo lavoro" e avere l'utente scegliere se il controller verrà scoppiato o riportato.
Problema interessante. Ho la sensazione che è necessario disabilitare il 'interactivePopGestureRecognizer' e registrarne uno o utilizzare le [transizioni interattive] di iOS 7 (http://www.objc.io/issue-5/view-controller-transitions.html) –
Temo che potresti avere ragione. Sembra strano questo non è un problema comune. Mi aspetterei che alcune app necessitino di implementarlo almeno ad un certo punto.La cosa peggiore di implementare una transizione personalizzata è che devi disabilitare in modo esplicito il gesto su ciascuno di questi controller e riattivarlo dopo che è stato scoppiato (o è stato premuto un altro). –