質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

653閲覧

stackviewの中のviewをタップしてイベントを掴みたい

w00r0ntea

総合スコア18

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/09/05 10:23

編集2018/09/05 10:26

カスタムクラスを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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/09/11 04:10

端っこの方(ラベルのあたり)をタップしてもダメでしょうか?UIImageViewのisUserInteractionEnabledはtrueになってますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問