こちらを参考にコードのみのアプリを作っています。
以下の処理はnavigationbarにアイコン画像と名前を表示し、そこをタッチすると画面遷移するというものです。
addGestureRecognizerでタップ処理を追加しています。(コード下部)
しかし、画像の様にnavigationbarに画像と名前は表示されるものの、タッチが効かない状況です。
よく、isUserInteractionEnabledがtrueになっていないことが原因の場合をよく見るのでそれも追加して見ましたがやはりタップできませんでした。
また#selectorで指定したメソッドにprint("1")を追加して見たのですが(表示されなかったので)そのメソッド自体呼ばれていませんでした。
もしわかる方がいらっしゃいましたらよろしくお願いいたします。
足りない部分がありましたら指摘していただけると幸いです。
swift
1 2 func setupNavBarWithUser(user: User) { 3 4 let titleView = UIView() 5 titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 40) 6 7 let containerView = UIView() 8 containerView.translatesAutoresizingMaskIntoConstraints = false 9 titleView.addSubview(containerView) 10 11 let profileImageView = UIImageView() 12 profileImageView.translatesAutoresizingMaskIntoConstraints = false 13 profileImageView.contentMode = .scaleAspectFill 14 profileImageView.layer.cornerRadius = 20 15 profileImageView.clipsToBounds = true 16 if let profileImageUrl = user.profileImageUrl { 17 profileImageView.loadImageUsinggCacheWithUrlString(urlString: profileImageUrl) 18 } 19 20 containerView.addSubview(profileImageView) 21 22 //ios 9 constraint anchors 23 //need x,y,width,height anchors 24 profileImageView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true 25 profileImageView.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true 26 profileImageView.widthAnchor.constraint(equalToConstant: 40).isActive = true 27 profileImageView.heightAnchor.constraint(equalToConstant: 40).isActive = true 28 29 let nameLabel = UILabel() 30 31 containerView.addSubview(nameLabel) 32 nameLabel.text = user.name 33 nameLabel.translatesAutoresizingMaskIntoConstraints = false 34 35 //need x,y,width,height anchors 36 nameLabel.leftAnchor.constraint(equalTo: profileImageView.rightAnchor, constant: 8).isActive = true 37 nameLabel.centerYAnchor.constraint(equalTo: profileImageView.centerYAnchor).isActive = true 38 nameLabel.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true 39 nameLabel.heightAnchor.constraint(equalTo: profileImageView.heightAnchor).isActive = true 40 41 containerView.centerXAnchor.constraint(equalTo: titleView.centerXAnchor).isActive = true 42 containerView.centerYAnchor.constraint(equalTo: titleView.centerYAnchor).isActive = true 43 44 self.navigationItem.titleView = titleView 45 titleView.isUserInteractionEnabled = true 46 titleView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(showChatController))) 47 } 48 49 @objc func showChatController() { 50 print("1") 51 let chatLogController = ChatLogController() 52 navigationController?.pushViewController(chatLogController, animated: true) 53 54 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/23 11:41
2018/04/24 00:56