我在titleView位置的navigationBar中添加了一个按钮。 然后我在这个按钮上添加了一个子视图。 我正在尝试添加与此视图关联的手势识别器(UIImageView),但未检测到点击。 是因为在NavigationBar中吗? 有没有办法让它发挥作用?
这是我的代码:
func createHeaderButton() {
headerTitleBtn.setTitle(headerTitleBtnString, for: .normal)
headerTitleBtn.titleLabel?.minimumScaleFactor = 0.5
headerTitleBtn.titleLabel?.numberOfLines = 2
headerTitleBtn.semanticContentAttribute = .forceRightToLeft
let buttonImage = UIImageView()
buttonImage.frame = CGRect(x: headerTitleBtn.frame.size.width, y: headerTitleBtn.frame.size.height/2 - 6, width: 12, height: 12)
buttonImage.image = UIImage(named:"arrowDown")
buttonImage.contentMode = .scaleAspectFit
buttonImage.isUserInteractionEnabled = true
buttonImage.backgroundColor = UIColor.red
headerTitleBtn.contentMode = .scaleAspectFit
let tapHedaerBtn = UIGestureRecognizer(target: self, action: #selector(headerBtnTapped))
buttonImage.addGestureRecognizer(tapHedaerBtn)
headerTitleBtn.addSubview(buttonImage)
}
@objc func headerBtnTapped() {
print("here<")
}
我在viewDidLoad和viewWillAppear
中调用此函数谢谢
---------------------------更新 这是我的解决方案: 我更改了代码,因此我不需要添加手势识别器和按钮上的所有内容:
func createHeaderButton() {
headerTitleBtn.setTitle(headerTitleBtnString, for: .normal)
headerTitleBtn.titleLabel?.minimumScaleFactor = 0.5
headerTitleBtn.titleLabel?.numberOfLines = 2
headerTitleBtn.semanticContentAttribute = .forceRightToLeft
headerTitleBtn.contentMode = .scaleAspectFit
headerTitleBtn.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 0)
headerTitleBtn.setImage(UIImage(named:"arrowDown"), for: .normal)
headerTitleBtn.imageEdgeInsets = UIEdgeInsets(top: 8, left: 15, bottom: 8, right: 8)
headerTitleBtn.imageView?.contentMode = .scaleAspectFit
headerTitleBtn.imageView?.tintColor = UIColor.white
headerTitleBtn.tintColor = UIColor.white
}