カスタムクラスをstack viewに入れて、そのカスタムクラスのタップイベントをaddTargetで拾おうとしているのですが、タップができません。
表示はされているのですが、イベントだけが拾えないため、どこに問題があるかわからずにいます。
ご存知の方いらっしゃいましたら、ご教授いただけますと幸いです。
swift
1コード 2 3import UIKit 4 5@IBDesignable 6public final class MUITabBarButton: UIControl { 7 8 @IBOutlet private weak var imageView: UIImageView! 9 @IBOutlet private weak var titleLabel: UILabel! 10 11 @IBOutlet weak var baseView: UIView! 12 13 @IBInspectable var titleText: String = "" { 14 didSet { 15 self.titleLabel.text = titleText 16 } 17 } 18 19 @IBInspectable var tabImage : UIImage? = nil { 20 didSet { 21 self.imageView.image = tabImage 22 } 23 } 24 25 public override init(frame: CGRect) { 26 super.init(frame: frame) 27 initializeContentView() 28 } 29 30 public required init?(coder: NSCoder) { 31 super.init(coder: coder) 32 initializeContentView() 33 } 34 35 private func initializeContentView() { 36 let nib = UINib(nibName: "MUITabBarButton", bundle: Bundle(for: MUITabBarButton.self)) 37 let contentView = nib.instantiate(withOwner: self, options: nil).first as! UIView 38 addSubview(contentView) 39 40 contentView.translatesAutoresizingMaskIntoConstraints = false 41 let bindings = ["view": contentView] 42 addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", 43 options:NSLayoutFormatOptions(rawValue: 0), 44 metrics:nil, 45 views: bindings)) 46 addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", 47 options:NSLayoutFormatOptions(rawValue: 0), 48 metrics:nil, 49 views: bindings)) 50 } 51}
swift
1コード 2 3import UIKit 4 5class MainTabBarViewController : UIViewController { 6 7 @IBOutlet weak var tab1: MUITabBarButton! 8 @IBOutlet weak var tab2: MUITabBarButton! 9 @IBOutlet weak var tab3: MUITabBarButton! 10 11 @IBOutlet weak var mainView: UIView! 12 @IBOutlet weak var tabBar: UIStackView! 13 14 static func makeInstance() -> MainTabBarViewController { 15 let storyboard = UIStoryboard(name: "TabBar", bundle: nil) 16 let viewController = storyboard.instantiateInitialViewController() as! MainTabBarViewController 17 return viewController 18 } 19 20 override func viewDidLoad() { 21 super.viewDidLoad() 22 23 let ohvc = OnegaiHomeViewController.makeInstance() 24 self.addChildViewController(ohvc) 25 ohvc.didMove(toParentViewController: self) 26 self.mainView.addSubview(ohvc.view) 27 28 tab1.addTarget(self, action: #selector(buttonEvent1(sender: )), for: .touchUpInside) 29 tab2.addTarget(self, action: #selector(buttonEvent2(sender: )), for: .touchUpInside) 30 tab3.addTarget(self, action: #selector(buttonEvent3(sender: )), for: .touchUpInside) 31 } 32 33 @objc func buttonEvent1(sender: UIButton) { 34 print("イベント1: (sender)") 35 } 36 @objc func buttonEvent2(sender: UIButton) { 37 print("イベント2: (sender)") 38 } 39 @objc func buttonEvent3(sender: UIButton) { 40 print("イベント3: (sender)") 41 } 42}
端っこの方(ラベルのあたり)をタップしてもダメでしょうか?UIImageViewのisUserInteractionEnabledはtrueになってますか?
あなたの回答
tips
プレビュー