Die Navigationsleiste wird beim Klicken auf die Ansicht angezeigt


8

Ich hänge das Video meines Problems an. Wenn ich auf eine beliebige Stelle in der Viewcontroller-Navigationsleiste klicke, wird diese angezeigt

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(true, animated: true)
    self.navigationController?.isNavigationBarHidden = true
    self.navigationController?.hidesBarsOnTap = true
}

Der obige Code, der in der Ansicht hinzugefügt wurde, wird anfangs angezeigt. Wenn ich jedoch auf eine beliebige Stelle in der Navigationsleiste des Bildschirms klicke, wird diese angezeigt.


Sind Sie mit SceneDelegate?
Rob

Dieses Projekt wurde in xcode 10
kishor soneji

Können Sie mir zeigen AppDelegate, wo Sie Ihre definiert haben NavigationController?
Rob

let storyboard: UIStoryboard = UIStoryboard (Name: "Main", Bundle: nil) let navigationController: UINavigationController = storyboard.instantiateInitialViewController () as! UINavigationController lässt rootViewController: UIViewController = storyboard.instantiateViewController (withIdentifier: "NexaRootSideMenuViewController") als! NexaRootSideMenuViewController navigationController.viewControllers = [rootViewController] navigationController.isNavigationBarHidden = true appdelegate.window? .RootViewController = navigationController
kishor soneji

1
Versuchen Sie dies:navigationController.setNavigationBarHidden(true, animated: false)
Rob

Antworten:


3

Endlich funktionieren diese Lösungen für mich

self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)

2
Dies ist eine Lösung, aber sie bewegt die Navigationsleiste vom Bildschirm. Das Verhalten beim Anzeigen der Navigationsleiste beim Tippen ist weiterhin vorhanden. Ich würde vorschlagen, die wahre Ursache zu lösen und eine angemessene Lösung zu finden.
Eelco Koelewijn

0

Versuchen Sie den folgenden Code, den ViewControllerSie ausblenden möchtenNavigationBar

DispatchQueue.main.async {
    self.navigationController?.setNavigationBarHidden(true, animated: false)
    self.view.isUserInteractionEnabled = true
    //Below code conflicts with the hidden `NavigationBar` and make it visible on tap so set it false as below
    self.navigationController?.hidesBarsOnTap = false
}

Und ADD Below Code in Other, den ViewControllerSie anzeigen möchten Navigationbar(Nicht in jedem anderen ViewController, nur in ViewControllerIhnen Push oder Pop von diesem ViewController)

self.navigationController?.setNavigationBarHidden(false, animated: true)

Nein, Sir. Wenn ich auf den Bildschirm
tippe, um die Zeitnavigation

0

Versuchen Sie es mit der globalen Warteschlange

DispatchQueue.global().async {
     navigationController?.setNavigationBarHidden(true, animated: animated)
}

oder fügen Sie diesen Code einfach hinzu viewDidAppear

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: animated)
}

Wenn diese beiden nicht funktionieren, überprüfen Sie Ihr Ansichtstippereignis. Möglicherweise wurde Code für die Navigation hinzugefügt


Nein, Sir. Wenn ich auf den Bildschirm
tippe, um die Zeitnavigation

1
Ich habe gesehen, dass möglicherweise ein Ereignis ausgelöst wird. Benutzerinteraktion der Ansicht deaktivieren : self.view.isUserInteractionEnabled = false. und versuchen Sie auf Ihren Bildschirm zu tippen, während die Navigation nicht angezeigt wird.
NøBi Mac

Kein Ereignis Feuer auf Tap @ NøBi Mac
kishor soneji

Haben Sie die Benutzerinteraktion auf Ihrem Bildschirm deaktiviert?
NøBi Mac

Wenn Sie die Superview-Benutzerinteraktion deaktivieren, wird die Deaktivierung der untergeordneten Ansicht automatisch deaktiviert.
Kishor Soneji

0

Überprüfen Sie Ihre wichtigsten UINavigationController-Storyboard-Eigenschaften im Storyboard und deaktivieren Sie die Option "Balken ausblenden, wenn sie vertikal kompakt sind" und "Balken beim Tippen ausblenden". Dadurch wird die Navigationsleiste angezeigt, wenn Sie auf Ansicht klicken.

Wenn Sie UINavigationController programmgesteuert erstellen, verwenden Sie den folgenden Code.

UINavigationController().hidesBarsWhenVerticallyCompact = false
UINavigationController().hidesBarsOnTap = false

Geben Sie hier die Bildbeschreibung ein


Diese Antwort funktioniert nicht
kishor soneji

Ändern Sie dies in Ihrer AnsichtWillAppear "navigationController? .hidesBarsOnTap = false" und ich habe meine obige Antwort bearbeitet und versucht, hauptsächlich alle Optionen unter "Balken im Storyboard
ausblenden

überschreiben func viewWillAppear (_ animiert: Bool) {self.navigationController? .setNavigationBarHidden (true, animiert: true) self.navigationController? .isNavigationBarHidden = true self.navigationController? .hidesBarsOnTap = false}
Sand'sHell821

Bitte überprüfen Sie mein Video. Die Ansicht wird bereits angezeigt, aber das Problem tritt auf, wenn der Benutzer nach wenigen Bewegungen auf die Ansicht klicken. Die Navigation wird angezeigt. @ Sam'sHell811
kishor soneji

Ich habe Ihr Video gesehen. Haben Sie den obigen Schritt versucht, um Ihr Problem zu lösen? Ich habe dasselbe Szenario erstellt. Wenn jemand die Option "Balken ausblenden" und "Wenn vertikal kompakt" aktiviert hat, tritt dieses Problem auf. Deaktivieren Sie es im Storyboard oder ändern Sie beide Eigenschaften programmgesteuert auf false, wie ich in Ihrem obigen Code gesehen habe. Sie haben hidesBarOnTap = true verwendet, wodurch das Problem verursacht wird. Machen Sie es also falsch.
Sand'sHell811

0

VERSUCHEN SIE UNTEN

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.isNavigationBarHidden = true
}

override func viewWillDisappear(_: Bool) {
    super.viewWillDisappear(true)
    navigationItem.title = ""
}

Überprüfen Sie diese Lösung. @ kishor-soneji
JhonnyTawk

Bitte überprüfen Sie das Video @JhonnyTawk Die Navigationsleiste wird zunächst ausgeblendet, wenn ich auf das Fenster klicke, in dem die Zeitnavigation angezeigt wird.
Kishor Soneji
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.