Durch das Zurücksetzen der Schaltfläche in iOS 7 kann nicht mehr zurückgewischt werden
Ich eine iOS 7 app, wo ich bin Einstellung einer benutzerdefinierten Schaltfläche zurück, wie diese:
UIImage *backButtonImage = [UIImage imageNamed:@"back-button"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backButtonImage forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, 20, 20);
[backButton addTarget:self
action:@selector(popViewController)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
viewController.navigationItem.leftBarButtonItem = backBarButtonItem;
Aber dies deaktiviert die iOS 7 "wischen Sie nach Links, nach rechts" - Geste navigieren Sie zu dem vorherigen controller. Weiß jemand, wie kann ich eine benutzerdefinierte Taste und halten immer noch diese Geste aktiviert?
BEARBEITEN:
Ich versuchte, legen Sie den viewController.navigationItem.backBarButtonItem statt, aber dieses scheint nicht, zu zeigen, dass meine benutzerdefinierten Bild.
InformationsquelleAutor der Frage lehn0058 | 2013-09-27
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
WICHTIG:
Dies ist ein hack. Ich empfehle einen Blick auf diese Antwort.
Aufruf der folgenden Zeile nach der Zuweisung der
leftBarButtonItem
für mich gearbeitet:Edit:
Dies funktioniert nicht, wenn genannt in
init
Methoden. Es sollte aufgerufen werden, inviewDidLoad
oder ähnliche Methoden.InformationsquelleAutor der Antwort Paul Hunter
Verwenden Sie die backIndicatorImage und backIndicatorTransitionMaskImage Eigenschaften der UINavigationBar, wenn überhaupt möglich. Diese Einstellung auf eine UIAppearanceProxy können ganz einfach ändern Sie Verhalten über Ihre Bewerbung. Das Falten ist, können Sie nur diejenigen, die auf ios 7, aber das funktioniert denn Sie können nur die pop-Geste in ios 7 sowieso. Ihre normale ios 6 kann styling intakt bleiben.
Versuchen zu manipulieren, die interactivePopGestureRecognizer die Stellvertretung führt zu einer Reihe von Problemen.
InformationsquelleAutor der Antwort Saltymule
Sah ich diese Lösung http://keighl.com/post/ios7-interactive-pop-gesture-custom-back-button/ die Unterklassen UINavigationController. Seine eine bessere Lösung als es mit der Fall, wo Sie wischen, bevor sich die Steuerung im Ort - die einen Absturz verursacht.
Zusätzlich dazu habe ich bemerkt, wenn Sie einen swipe auf der root-view-controller (nach dem drücken auf eines, und wieder zurück) die Benutzeroberfläche nicht mehr reagiert (auch gleiche problem in der Antwort oben).
So, dass der code in Unterklassen UINavigationController sollte ungefähr so Aussehen:
InformationsquelleAutor der Antwort Nick H247
Benutze ich
InformationsquelleAutor der Antwort Albert Chu
Ich auch ausblenden, die zurück-Taste, und ersetzen Sie es mit einem benutzerdefinierten leftBarItem.
Entfernen interactivePopGestureRecognizer delegieren nach push-Aktion für mich gearbeitet:
InformationsquelleAutor der Antwort avishic
Dies ist aus http://stuartkhall.com/posts/ios-7-development-tips-tricks-hacksaber es verursacht mehrere Fehler:
z.B. Wenn der rootViewController der navigationController anzeigt, führen Sie eine Streifbewegung von der linken Kante des Bildschirms, und Tippen Sie auf, etwas(SCHNELL) zu schieben anotherViewController in den navigationController, dann
So müssen Sie implementieren
UIGestureRecognizerDelegate
Methode inself.navigationController.interactivePopGestureRecognizer.delegate
wie diese:InformationsquelleAutor der Antwort iwill
Hier ist swift3 version von Nick H247 Antwort
InformationsquelleAutor der Antwort duan
Versuchen
self.navigationController.
interactivePopGestureRecognizer
.enabled = YES;
InformationsquelleAutor der Antwort ilya n.
Ich nicht schreiben, aber der folgende blog hat mir sehr geholfen und gelöst meine Probleme mit der benutzerdefinierten navigation Taste:
http://keighl.com/post/ios7-interactive-pop-gesture-custom-back-button/
Zusammenfassend, er implementiert eine benutzerdefinierte UINavigationController verwendet, die die pop-Geste delegieren. Sehr sauber und tragbar!
Code:
Bearbeiten. Hinzugefügt fix für Probleme, wenn ein Benutzer versucht, wischen Sie nach Links, auf einem root-view-controller:
InformationsquelleAutor der Antwort kgaidis
RootView
ChildView
InformationsquelleAutor der Antwort PW486
Ich hatte ein ähnliches problem, wo ich war, die Zuordnung der aktuellen view-controller als Delegierter für die interaktive pop-Geste, aber brechen würde die Geste in jedem Blick geschoben, oder sichten unterhalb der Ansicht in der nav-stack. Die Art, wie ich dies Problem gelöst war, war die Stellvertretung in
-viewDidAppear
dann setzen Sie es auf null in-viewWillDisappear
. Dass dürfen meine anderen Ansichten korrekt funktionieren.InformationsquelleAutor der Antwort Bill Burgess
Vorstellen, dass wir mit der Apple-Standard-master/detail-Projekt-Vorlage, wo master ist ein table-view-controller und Tippen Sie auf es wird die detail view controller.
Wir möchten, passen Sie die zurück-Taste, erscheint in der detail view controller. Dies ist, wie Sie die BildBild Farbetexttext-Farbe, und schriftart der zurück-Taste.
Ändern Sie die Bild, Bild, Farbe, text-Farbe oder schriftart Global, platzieren Sie die folgenden in einem Ort, genannt bevor Sie Ihre view-Controller erstellt (z.B.
application:didFinishLaunchingWithOptions:
ist ein guter Ort).Beachten, können Sie
appearanceWhenContainedIn:
haben mehr Kontrolle über die view-Controller sind von diesen änderungen betroffen, aber Bedenken Sie, dass Sie nicht passieren können[DetailViewController class]
weil es enthalten ist, innerhalb eines UINavigationController, nicht Ihre DetailViewController. Dies bedeutet, dass Sie brauchen, um eine Unterklasse UINavigationController wenn Sie möchten mehr Kontrolle über das, was betroffen ist.Anpassen-der text oder die schriftart/- Farbe einer bestimmten back-Taste Element, Sie muss in den MasterViewController (nicht der DetailViewController!). Dies scheint unintuitiv, weil der button erscheint in der DetailViewController. Allerdings, wenn Sie verstehen, dass die Art und Weise anpassen, es ist durch das festlegen einer Eigenschaft auf eine navigationItem, es beginnt mehr Sinn machen.
Hinweis: Versuch, die titleTextAttributes nach der Einstellung selbst.navigationItem.backBarButtonItem scheint nicht zu funktionieren, also müssen Sie festlegen, bevor Sie zuweisen, den Wert dieser Eigenschaft.
InformationsquelleAutor der Antwort Senseful
Erstellen Sie eine Klasse 'TTNavigationViewController' die Unterklasse 'UINavigationController' und machen Sie Ihre bestehende navigation-controller dieser Klasse werden entweder in storyboard/Klasse, Beispiel-code in der Klasse -
InformationsquelleAutor der Antwort Prakash Raj