在 Swift 中使 NavigationBar 子视图可点击
Posted
技术标签:
【中文标题】在 Swift 中使 NavigationBar 子视图可点击【英文标题】:Making NavigationBar subview clickable in Swift 【发布时间】:2020-10-29 20:51:20 【问题描述】:我在导航控制器中嵌入了一个视图控制器。该视图有 1 个WKWebView
,因此,我将view = webView
设置为loadView()
覆盖。
因此,我在导航控制器下方添加了一个小的子导航栏,以允许用户更改其位置。我可以将子视图添加到导航控制器,但我无法使其可点击。
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")
但是当我点击标签时,我没有在控制台中打印任何内容。我不知道 TapGestureRecognizer 使用 target: self
是错误的还是这里发生了什么。
【问题讨论】:
【参考方案1】:我也是 Swift 的新手,所以我的答案远不能保证。我只知道在你的位置上是什么感觉,
也许尝试为子导航栏创建一个navigationBar的子类,即mySubNavigationBar。然后在子类的代码中做所有你需要做的初始化。包括打印线,以便您知道是否到达那里。
附言我会将此作为评论,但我没有足够的积分来添加 cmets。
【讨论】:
以上是关于在 Swift 中使 NavigationBar 子视图可点击的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中设置自定义 NavigationBar 的最简单方法是啥?
在swift中将navigationBar底部边框更改为虚线
SearchBar 和 NavigationBar 之间的空格 - Swift
Swift:裁剪没有 TabBar 和 NavigationBar 的屏幕截图