Ios 使导航栏子视图在Swift中可单击

Ios 使导航栏子视图在Swift中可单击,ios,swift,navigationbar,uitapgesturerecognizer,Ios,Swift,Navigationbar,Uitapgesturerecognizer,我在导航控制器中嵌入了一个视图控制器。视图有1个WKWebView,因此,我在loadView()覆盖中设置view=webView 因此,我在我的导航控制器下面添加了一个小的子导航栏,允许用户更改他们的位置。我可以将子视图添加到导航控制器中,但我无法使其可单击 override func loadView() { let config = WKWebViewConfiguration() config.processPool = YourModelObject.sharedInst

我在导航控制器中嵌入了一个视图控制器。视图有1个
WKWebView
,因此,我在
loadView()
覆盖中设置
view=webView

因此,我在我的导航控制器下面添加了一个小的子导航栏,允许用户更改他们的位置。我可以将子视图添加到导航控制器中,但我无法使其可单击

override func loadView() {
   let config = WKWebViewConfiguration()
   config.processPool = YourModelObject.sharedInstance.processPool
   webView = WKWebView(frame: .zero, configuration: config)
   webView.navigationDelegate = self
   self.webView.scrollView.delegate = self
   view = webView
   ..
   
   if let navigationBar = self.navigationController?.navigationBar {
      let secondFrame = CGRect(x: 50, y: 44.1, width: navigationBar.frame.width, height: 30)
      let secondLabel = UILabel(frame: secondFrame)
      secondLabel.textColor = .black
      secondLabel.text = "Getting your location..."
      secondLabel.isUserInteractionEnabled = true
      let guestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(setLocation(_:)))
      secondLabel.addGestureRecognizer(guestureRecognizer)
      secondLabel.textAlignment = .left
      secondLabel.font = secondLabel.font.withSize(14)
      secondLabel.tag = 1002
      navigationBar.addSubview(secondLabel)
   }
}
然后是setLocation函数

@objc func setLocation(_ sender: Any) {
   print("location label tapped")
}

但当我点击标签时,控制台中并没有打印任何内容。我不知道TapGestureRecognitor是否使用了
target:self
,或者这里发生了什么事。

我对Swift也不熟悉,所以我的答案很难保证。我只知道处在你的位置是什么感觉

也许可以尝试为子导航栏创建一个子类navigationBar,即mySubNavigationBar。然后在子类的代码中执行所有需要执行的初始化。包括打印线,这样你就能知道你是否能到达那里

p、 我会把这当作一个评论,但我没有足够的分数来添加评论