7

Non appena ho aggiunto l'elemento del pulsante della barra di navigazione barra personalizzata, ho perso la possibilità di utilizzare la funzione predefinita per tornare indietro. Mi piacerebbe avere la possibilità di usare "scorri dal bordo" per tornare indietro.Pop control controller che utilizza il riconoscimento dello schermo pan che non segue il pollice

Ho aggiunto il Riconoscitore di gesti Edge Pan e l'ho collegato a @IBAction, ma l'azione di eliminazione si verifica completamente non appena viene riconosciuto il movimento di panoramica.

Invece di seguire lentamente il mio pollice (come si vede in altre app), la vista corrente si sposta con l'animazione predefinita.

Come eseguire l'animazione seguendo il mio pollice utilizzando il riconoscimento di gonfiore Edge Pan?

@IBAction func edgeSwipe(sender: AnyObject) { 
    navigationController?.popViewControllerAnimated(true) 
} 

enter image description here

+1

Perché il gesto di sistema non è funzionante? Hai provato [questo] (http://stackoverflow.com/a/28919337/5442445)? – beyowulf

+0

@beyowulf Non funziona perché ho aggiunto un pulsante alla voce del pulsante sulla barra sinistra. Ho aggiunto un pulsante qui perché voglio avere accesso ad alcune funzionalità di stile di UIButton. Tuttavia, l'aggiunta di un normale oggetto pulsante Bar (se si desidera solo personalizzare il titolo) fa sì che il sistema abbia provveduto a smettere di funzionare. E per la seconda parte: ho seguito il tuo link proprio ora e sono stato in grado di riprendere lo stesso comportamento per lo swiping come implementazione di sistema predefinita. – Andrej

+0

@beyowulf, tu mi hai indicato nella giusta direzione e vorrei premiarti con una taglia. Ma l'unico modo per farlo è se fornisci una risposta. Quindi se fornisci almeno una semplice risposta ottieni una taglia, tocca a te :) – Andrej

risposta

6

Non c'è bisogno di aggiungere un margine Pan Gesto riconoscitore. Seguendo i suggerimenti di @ beyowulf sono riuscito a implementare lo swipe per tornare alla funzionalità che si comporta allo stesso modo dell'implementazione di sistema predefinita: il bordo delle viste segue il mio pollice mentre lo faccio scorrere per chiuderlo.

Quindi ho rimosso lo ScreenEdge Pan Gesture Recogniser dallo storyboard e rimosso anche il relativo @IBAction.

Ho creato il mio primo controller di visualizzazione come delegato per interactivePopGestureRecognizer. Ecco il codice:

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     navigationController?.interactivePopGestureRecognizer?.delegate = self 
    } 
} 

extension ViewController: UIGestureRecognizerDelegate { 

    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool { 
     return navigationController?.viewControllers.count > 1 ? true : false 
    } 
}