Animation nur beim Vollende der pop-Geste durchführen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Animation nur beim Vollende der pop-Geste durchführen

    Hallo Entwickler,

    ich animiere ein View, das zur Toolbar gehört beim Übergang von einem ViewController zu einem anderen. Ich nutze dazu die ViewWillAppear Methode des ersten ViewControllers, damit auch bei der neuen interaktiven pop-Geste die Animation schön glatt verläuft.

    Quellcode

    1. - (void)viewWillAppear:(BOOL)animated
    2. {
    3. [super viewWillAppear:animated];
    4. plusButton.alpha = 1.0;
    5. plusButtonBottomSpace.constant = 0.0;
    6. }


    Es funktioniert alles ganz gut, aber wenn die Geste abgebrochen wird, schippst der alte ViewController wieder zurück, so wie es sich gehört. Das Problem ist dabei nur, das mein Button kurz aufblinkt, da die Animation sofort abgeschlossen wird (alpha = 1) und dann verschwindet er wieder, da ich im viewWillAppear des neuen ViewController alpha wieder auf 0 setze.

    Wie kann ich dieses Aufblinken verhindern?
    Die Animation soll also wieder in ihr Ausgangsstadium zurückkehren, wenn die Geste abgebrochen wird. Ich weiß aber nicht, wie ich z.B. den dazugehörigen GestureRecognizer bekommen kann.
  • macmoonshine schrieb:

    Wahrscheinlich solltest Du das nicht (direkt über den Gesture-Recognizer sondern lieber über die beteiligten Viewcontroller regeln.


    Das Problem dabei ist nur, dass die Animation vollendet wird, bevor der Code der View Controller ausgeführt wird. Dadurch erscheint der Button kurz, bevor er versteckt wird. Anscheinend kann ich es im completation block von [View animateWith...] versuchen. Dazu müsste ich aber herausfinden, ob die Geste erfolgreich war oder abgebrochen wurde. self.navigationController.interactivePopGestureRecognizer.state gibt immer nur 0 zurück, da die Gesture schon ausgeführt wurde. Wie kann ich herausfinden, ob es erfolgreich war oder abgebrochen wurde?