UITapGestureRecognizer не работает на UIView в навигационной панели titleView? - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь добавить tapGesture на navigationBar titleView, но не получаю никакого события.Подскажите пожалуйста как решить эту проблему.

 let titleView = UIView()
 titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 60)
 titleView.backgroundColor = UIColor.yellow

 let profileImageView = UIImageView()
 profileImageView.contentMode = .scaleAspectFill
 profileImageView.layer.cornerRadius = 20
 profileImageView.clipsToBounds = true
 profileImageView.loadImageUsingCacheWithUrlString(urlString: user.image)
 titleView.addSubview(profileImageView)
 profileImageView.translatesAutoresizingMaskIntoConstraints = false
 profileImageView.leftAnchor.constraint(equalTo: titleView.leftAnchor).isActive = true
 profileImageView.centerYAnchor.constraint(equalTo: titleView.centerYAnchor).isActive = true
 profileImageView.widthAnchor.constraint(equalToConstant: 40).isActive = true
 profileImageView.heightAnchor.constraint(equalToConstant: 40).isActive = true

 let nameLabel = UILabel()
 nameLabel.text = user.name
 nameLabel.font = UIFont(name: "HelveticaNeue-Medium", size: 17)
 titleView.addSubview(nameLabel)
 nameLabel.translatesAutoresizingMaskIntoConstraints = false
 nameLabel.leftAnchor.constraint(equalTo: profileImageView.rightAnchor, constant: 8).isActive = true
 nameLabel.centerYAnchor.constraint(equalTo: profileImageView.centerYAnchor).isActive = true
 nameLabel.rightAnchor.constraint(equalTo: titleView.rightAnchor).isActive = true
 nameLabel.heightAnchor.constraint(equalTo: profileImageView.heightAnchor).isActive = true

 self.navigationItem.titleView = titleView
 titleView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(showChatTableViewController)))

1 Ответ

1 голос
/ 25 мая 2019

Убедитесь, что для isUserInteractionEnabled установлено значение true.По умолчанию это правда, но если в вашем случае это не работает, попробуйте установить true

. Убедитесь, что вы отлаживаете код и проверяете, что после добавления titleView вы можете распечатать self.navigationItem.titleView?

let titleView = UIView()
titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 60)
titleView.backgroundColor = UIColor.yellow
titleView.isUserInteractionEnabled = true

self.navigationItem.titleView = titleView
titleView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(showChatTableViewController)))

@objc func showChatTableViewController() {
    print("tapped")
}
...