私はUINavigationItemを持っており、UILabelとUIImageViewが埋め込まれたUIViewにtitleViewを設定しました。私はビューにUITapGestureRecognizerを追加しようとしていますが、動作していないようです。どんな解決策ですか?また、私はrightBarButtonItemを持っていて、戻るボタンを使いたいので、navigationBar全体にgestureRecognizerを追加することはオプションではありません。Swift UITapGestureのタイトル表示で動作しません。
はここに私のコードです:
func configureTitleView() {
guard let profile = profile else {
// Pop navController
return
}
let titleView = UIView()
titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 40)
let containerView = UIView()
containerView.translatesAutoresizingMaskIntoConstraints = false
titleView.addSubview(containerView)
let profileImageView = UIImageView()
profileImageView.translatesAutoresizingMaskIntoConstraints = false
profileImageView.contentMode = .scaleAspectFill
profileImageView.clipsToBounds = true
let imageURL = URL(string: profile!.firstProfilePicture!)
profileImageView.sd_setImage(with: imageURL)
containerView.addSubview(profileImageView)
profileImageView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
profileImageView.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true
profileImageView.widthAnchor.constraint(equalToConstant: 36).isActive = true
profileImageView.heightAnchor.constraint(equalToConstant: 36).isActive = true
profileImageView.layer.cornerRadius = 36/2
let nameLabel = UILabel()
containerView.addSubview(nameLabel)
nameLabel.text = profile!.displayName!
nameLabel.textColor = .white
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: containerView.rightAnchor).isActive = true
nameLabel.heightAnchor.constraint(equalTo: profileImageView.heightAnchor).isActive = true
containerView.centerXAnchor.constraint(equalTo: titleView.centerXAnchor).isActive = true
containerView.centerYAnchor.constraint(equalTo: titleView.centerYAnchor).isActive = true
self.navigationItem.titleView = titleView
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.openProfile))
tapGesture.numberOfTapsRequired = 1
titleView.addGestureRecognizer(tapGesture)
titleView.isUserInteractionEnabled = true
}
ナビゲーションバーのすべてのアイテムをどのように追加するかコードを共有できますか?私はあなたがバックグラウンドビューにタップジェスチャーを追加していて、画像ビューとラベルがそれらのビューの上にあり、ジェスチャーが応答していないことを願っています。 – Bharath
1つの提案、タップジェスチャーの代わりに、他の2つを追加してボタンのターゲットを追加するようなクリアな色のボタンを追加することができます。 – Bharath
@Bharath私のコードを追加しました...ボタンを使用せずに取ることができるアプローチはありますか? –