UIGestureRecognizer zeigt keine Reaktion

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

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • UIGestureRecognizer zeigt keine Reaktion

    Hallo liebes Forum,
    und wieder Mal habe ich ein schier unlösbares Problem - zumindest für mich. :D

    Dank dem neuen XCode muss sich der Programmierer bei einfachen Applikationen eigentlich ja um die Verbindungen zwischen ViewControllern und dem Push und Pop von diesen wenig Gedanken machen. Das ist auch kein Problem.

    In meiner App habe ich einen NavigationController der ca. 6 - 7 verschiedene ViewController managt. Nun habe ich einen ViewController1,...,ViewController6. Beide haben eigene Header und Implementierungsfiles. Im ViewController1 verwende ich UIGestureRecognizer um das wischen nach links (popViewController) und das wischen nach rechts(pushViewController) zu erkennen. Wenn jetzt nach rechts gewischt wird, wird eine Zufallsvariable erstellt, die das Layout des neu zu ladenden ViewController bestimmt.

    Analog sollte das Programm auch beim gepushten ViewController arbeiten. Leider funktioniert nach einmaligem Wischen der gestureRecognizer im neuen View nicht.
    Ich habe die Verbindungen mit den IBActions mehrmals geprüft und keinen Fehler gefunden. Muss ich irgendetwas beachten? Die IBActions sehen so aus:

    Quellcode

    1. -(IBAction)weiter {
    2. self.appDelegate.aktuelleZufallszahl = [[NSNumber alloc]initWithInt:(random()%2)+1 ];
    3. appDelegate.aktuelleSeite ++;
    4. NSLog(@"Aktuelle neue Zahl = %i", self.appDelegate.aktuelleZufallszahl.intValue);
    5. if (self.appDelegate.aktuelleZufallszahl.intValue == 1) {
    6. Layout1 *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Layout1"];
    7. [self.navigationController pushViewController:controller animated:YES];
    8. } else {
    9. Layout2 *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Layout2"];
    10. [self.navigationController pushViewController:controller animated:YES]; }
    11. ...
    12. ...
    13. ...
    14. }
    15. -(IBAction)zuruck {
    16. if(self.appDelegate.aktuelleSeite == 0) {
    17. [self.navigationController popViewControllerAnimated:YES];
    18. } else {
    19. appDelegate.aktuelleSeite --;
    20. [self.navigationController popViewControllerAnimated:YES];
    21. }
    22. }
    Alles anzeigen



    Die Actions sind korrekt im InterfaceBuilder verbunden mit den GestureRecognizern. Leider kommt jedoch nicht einmal eine Aussage über NSLog.

    Fällt euch dazu was ein? :S
  • Ja, der neue View hat GestureRecognizer. Wäre sonst auch schwer diese mit der Action zu verbinden.

    Aus deiner Antwort lese ich aber heraus, dass es eigentlich nichts besonderes zu beachten gibt...? Ich habe gedacht, es läge eventuell daran, dass es ein neuer ViewController ist der gepusht wird. Wenn ich diesen ViewController aus dem Code heraus pushe wird doch automatisch auch die zugehörige .h und .m aktiv oder? ich meine, muss ich meinem Fenster erste sagen, dass der neue ViewController jetzt die Kontrolle übernehmen soll?

    Gruß, Denis :)
  • Das ist leider das was ich befürchtet habe :D
    Also nochmal schritt für schritt was ich gemacht habe:

    -> Ziehe einen neuen ViewController in die Storyboard-Ansicht
    -> Im Inspector: Gebe dem ViewController einen Identifier, um ihn später pushen zu können
    -> Erstelle eine neue UIViewController-Subclass, nennen wir sie "Layout1" mit .h und .m file
    -> Im Inspector: Ändere die Klasse des UIViewControllers auf "Layout1"
    -> Füge einen / zwei GestureRecognizer hinzu
    -> Schreibe die -(IBActions) und verbinde Sie mit dem GestureRecognizer.

    Irgendwas vergessen? Ich weiß, dass das ganze Problem sich wahrscheinlich in Luft auflösen würde, falls ich einfach ein neues Projekt zusammenschustre. Leider kann das ja kein Ausweg sein :S

    Denis