いつもお世話になります。
greenBtn.isEnabled = false
の状態でgreenBtnをタップした際にblueView
のtouchedBegan
を発生させたくないのですが、どうやったらできるでしょうか?ご存知でしたら教えて下さい。
swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var blueView: BlueView! 6 7 @IBOutlet weak var greenBtn: GreenBtn! 8 9 @IBAction func greenBtnDidTap(_ sender: UIButton) { 10 print("greenBtnDidTap") 11 } 12 13 @IBAction func isEnabledChangeBtn(_ sender: UIButton) { 14 15 greenBtn.isEnabled.toggle() 16 17 sender.isSelected = greenBtn.isEnabled 18 } 19 20} 21 22class BlueView: UIView { 23 24 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 25 print("blueViewTouchesBegan") 26 } 27} 28 29class GreenBtn: UIButton { 30 31 override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { 32 33 if isEnabled { 34 print("GreenBtn/hitTest/isEnabled == true") 35 return super.hitTest(point, with: event) 36 } else { 37 print("GreenBtn/hitTest/isEnabled == false") 38 return super.hitTest(point, with: event) 39 } 40 41 } 42 43 override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { 44 45 if isEnabled { 46 print("GreenBtn/point/isEnabled == true") 47 let result = super.point(inside: point, with: event) 48 return result 49 } else { 50 print("GreenBtn/point/isEnabled == false") 51 let result = super.point(inside: point, with: event) 52 return result 53 } 54 55 } 56 57} 58
できないようなら、greenBtn.isEnable = true
のまま、greenBtnDidTapメソッド内で何らかのフラグでイベントを制御し、
greenBtnの見た目をisEnabled = false
の状態と同じにしようと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。