A barra de navegação aparece ao clicar na visualização


8

Anexo o vídeo do meu problema. Quando clico em qualquer lugar da barra de navegação do viewcontroller, aparece

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

O código acima, adicionado à visualização, irá aparecer inicialmente, mas quando eu clicar em qualquer lugar da tela, a barra de navegação será exibida.


Você está usando SceneDelegate?
Rob

Este projeto criado no xcode 10
kishor soneji 25/01

Você pode me mostrar o seu AppDelegate, onde você definiu o seu NavigationController?
Rob

deixe storyboard: UIStoryboard = UIStoryboard (nome: "Principal", pacote: zero) deixe navigationController: UINavigationController = storyboard.instantiateInitialViewController () as! UINavigationController permite que rootViewController: UIViewController = storyboard.instantiateViewController (withIdentifier: "NexaRootSideMenuViewController") as! NexaRootSideMenuViewController navigationController.viewControllers = [rootViewController] navigationController.isNavigationBarHidden = true appdelegate.window? .RootViewController = navigationController
kishor soneji

1
Tente isto:navigationController.setNavigationBarHidden(true, animated: false)
Rob

Respostas:


3

Finalmente, essas soluções funcionam para mim

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

2
Esta é uma solução, mas o que faz é mover a barra de navegação para fora da tela. O comportamento de mostrar a barra de navegação na torneira ainda está acontecendo. Eu sugeriria resolver a causa real e fazer uma solução adequada.
Eelco Koelewijn

0

Experimente o código abaixo para o ViewControllerqual deseja ocultarNavigationBar

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
}

E ADICIONE Abaixo do código em Outro que ViewControllervocê deseja mostrar Navigationbar(não em todos os outros ViewController, apenas em ViewControllervocê pressionar ou sair disso ViewController)

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

Não senhor, quando
toco

0

Tente com fila global

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

ou simples adicione este código em viewDidAppear

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

se esses dois não funcionarem, verifique se o seu evento de toque de visualização pode ter algum código adicionado para navegação


Não senhor, quando
toco

1
Vi que pode haver algum evento disparado na torneira da vista. disable interação do usuário de vista: self.view.isUserInteractionEnabled = false. e tente tocar na tela ainda a navegação é exibida não?
NøBi Mac

Nenhum evento de incêndio no Tap @ NøBi Mac
kishor soneji 29/01

Você desativou a interação do usuário na tela?
NøBi Mac

Quando você desabilita a interação do usuário da super visão, desativa automaticamente a interação do usuário da visão infantil é desativada.
kishor soneji 29/01

0

Confira as propriedades principais do storyboard do UINavigationController no storyboard e desmarque as opções "Ocultar barras quando compactadas verticalmente", "Ocultar barras na torneira". isso faz com que a barra de navegação apareça ao clicar na visualização.

se você estiver criando UINavigationController programaticamente, use o seguinte código.

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

insira a descrição da imagem aqui


Esta resposta não está funcionando
kishor soneji 30/01

mude isso em seu viewWillAppear "navigationController? .hidesBarsOnTap = false" e eu editei minha resposta acima e tente, principalmente desmarque todas as opções na seção "Ocultar barras no storyboard"
Sand'sHell811

substituir func viewWillAppear (_ animado: Bool) {self.navigationController? .setNavigationBarHidden (true, animado: true) self.navigationController? .isNavigationBarHidden = true self.navigationController? .hidesBarsOnTap = false}
Sand'sHell811

Por favor, verifique meu vídeo. View já é aparecer, mas problema é depois de alguns user movimento de cliques em navegação visão é aparecer @ Sam'sHell811
kishor Soneji

Eu vi o seu vídeo. Você tentou o passo acima? Isso resolverá o seu problema. Criei o mesmo cenário. Se alguém marcar Ocultar barras "Ao tocar" e "Quando verticalmente compacto", esse problema ocorrerá, então desmarque-o no storyboard ou altere ambos propriedades para false programaticamente, como eu vi no código acima, você usou hidesBarOnTap = true, que está criando o problema, portanto, faça-o falso.
Sand'sHell811

0

TENTE ABAIXO

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

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

verifique esta solução. @ kishor-soneji
JhonnyTawk

Por favor, verifique o vídeo @JhonnyTawk Inicialmente a barra de navegação é ocultada quando clico na janela em que a navegação é exibida.
kishor soneji
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.