7

Sobald ich benutzerdefinierte bar Navigationsleiste Schaltfläche Element hinzugefügt habe Ich habe die Fähigkeit, die Standardfunktion zu verwenden, zurück zu gehen. Ich hätte gerne die Möglichkeit, "Swipe from Edge" zu verwenden, um zurück zu gehen.Pop-Ansicht-Controller mit Bildschirmkante Pan Gestenerkennung folgt nicht dem Daumen

Ich habe den Edge Pan Gesture Recognizer hinzugefügt und mit @IBAction verbunden, aber die Entlassungsaktion wird vollständig ausgeführt, sobald die Schwenkgeste erkannt wird.

Anstatt meinem Daumen zu folgen (wie in anderen Apps zu sehen), bewegt sich die aktuelle Ansicht mit vordefinierter Animation.

Wie mache ich die Animation nach meinem Daumen mit dem Edge Pan Gesture Recognizer?

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

enter image description here

+1

Warum funktioniert das System Geste nicht funktioniert? Hast du [das] versucht (http://stackoverflow.com/a/28919337/5442445)? – beyowulf

+0

@beyowulf Es funktioniert nicht, weil ich dem Element der linken Leiste eine Schaltfläche hinzugefügt habe. Ich habe hier eine Schaltfläche hinzugefügt, um auf einige Gestaltungsmerkmale des UIButton zugreifen zu können. Wenn Sie jedoch ein normales Feldschaltflächenelement hinzufügen (wenn Sie nur den Titel anpassen möchten), wird auch das System aufgefordert, die Funktion zu beenden. Und für den zweiten Teil: Ich bin gerade Ihrem Link gefolgt und konnte das gleiche Verhalten für das Zurückwischen zurückgewinnen wie die Standard-Systemimplementierung. – Andrej

+0

@beyowulf, du hast mich in die richtige Richtung gelenkt und ich würde dir gerne ein Kopfgeld geben. Aber die einzige Möglichkeit ist, wenn Sie eine Antwort geben. Also, wenn Sie mindestens eine einfache Antwort geben, erhalten Sie eine Prämie, es liegt an Ihnen :) – Andrej

Antwort

6

Es gibt keine Notwendigkeit Edge-Pan Geste Recogniser hinzuzufügen. Den Vorschlägen von @ beyowulf folgend, konnte ich das Swipe-Feature zum Zurückgehen implementieren, das sich genauso verhält wie die Standard-Systemimplementierung - der Rand der Ansicht folgt meinem Daumen, während ich ihn wische, um ihn zu schließen.

Also ich habe die ScreenEdge Pan Gesture Recogniser aus dem Storyboard entfernt und auch die damit verbundenen @IBAction entfernt.

Ich habe meinen ersten View-Controller zum Delegaten für interactivePopGestureRecognizer gemacht. Hier ist der Code:

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 
    } 
}