tvOS - Beim Drücken des Push-View-Controllers wird die MENU-Taste gedrückt

8

Ich habe einen UIViewController in meiner tvOS-App, der nur für ein paar Sekunden erscheint und eine vollständig anpassbare MENU-Tastenbedienung benötigt. Ich erstelle es so:

%Vor%

Ich zeige den View-Controller mit pushViewController:animated: :

an %Vor%

Ich habe festgestellt, dass, wenn der Benutzer MENU drückt, sobald der Bildschirm erscheint, während der Cross-Fade-Übergangseffekt immer noch angezeigt wird, sie dem UITapGestureRecognizer ausweichen und zu einem vorherigen Bildschirm zurückkehren können nicht beabsichtigt. Sie können auch Probleme verursachen, indem Sie MENÜ immer wieder neu mischen - schließlich werden sie aus Dingen entkommen, die sie nicht können sollten.

Wie kann ich sicherstellen, dass die MENU-Taste immer meine Übersteuerung erreicht? Gibt es eine Möglichkeit, einen App-umfassenden MENU-Button-Handler anzugeben und trotzdem einen UINavigationController zu verwenden?

    
StilesCrisis 01.02.2016, 00:08
quelle

2 Antworten

3

Eine Lösung, die für mich funktionierte, war die Installation eines UITapGestureRecognizer auf self.navigationController.view . Alle Tippfehler, die von den regulären UIViewControllern übersehen werden, werden stattdessen vom Recognizer des Navigationscontrollers abgefangen. Wenn Sie UITapGestureRecognizers auf jedem von Ihnen erstellten View-Controller installieren, sind die einzigen Taps, die durch die Risse des Navigations-Controllers fallen, Taps, die mitten im Übergang auftreten, und es ist sicher, diese Taps vollständig zu ignorieren.

Beachten Sie, dass wenn Sie möchten, dass MENU zum Home-Bildschirm zurückkehrt, Sie diesen Tap-Recognizer vorübergehend entfernen müssen und tvOS den Tap eigenständig handhaben muss, da ich keinen sauberen Weg finden konnte, um zum Home-Bildschirm zu gelangen Mein Code (kurz von exit(0) ).

    
StilesCrisis 05.02.2016, 01:21
quelle
0

Ich habe wegen dieses Verhaltens ein sehr ähnliches Problem. In meinem Fall habe ich ein benutzerdefiniertes Fokus-Management, abhängig von der Klick-Taste der MENU-Taste, die bei pressesEnded erkannt und von preferredFocusedView verwaltet wurde. Aber wenn Navigation Controller ViewController und Benutzer zu diesem Zeitpunkt poping machen zweiten Klick auf MENU-Taste, dann UINavigationController klasse erkennen pressesEnded und dann preferredFocusedView auf meinem Ziel ViewController, wo ist meine Verwaltung, aber pressesEnded wird nicht aufgerufen , weil von UINavigationController "gestohlen" wurde.

Lösung für dieses Problem in meinem Fall ist, "dummy" -Klasse zu erstellen, die von UINavigationController wie folgt verwendet wird:

%Vor%     
sliwinski.lukas 23.02.2016 13:01
quelle