tapGesture没有被执行
问题描述:
我已经添加tapGesture到我的UIImageView rDot。问题是,当我点击rDot时,什么也没有发生,并且它不打印“它工作”。 rDot与其他元素处于堆栈视图,我不知道这是否与它无关。 rDot和redDot是两个独立的UIImageViews。tapGesture没有被执行
override func viewDidLoad() {
super.viewDidLoad()
rDot.isUserInteractionEnabled = true
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(rdotimageTapped(tapGestureRecognizer:)))
rDot.addGestureRecognizer(tapGestureRecognizer)
}
func rdotimageTapped(tapGestureRecognizer: UITapGestureRecognizer) {
whiteD?.isHidden = true
redDot?.isHidden = false
print("It worked")
}
答
您需要携带subView
向前,因为你已经把imageView
内stackView
。有时候,视图层次结构不能识别分接subviews
。
override func viewDidLoad() {
super.viewDidLoad()
rDot.isUserInteractionEnabled = true
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(rdotimageTapped(tapGestureRecognizer:)))
rDot.addGestureRecognizer(tapGestureRecognizer)
view.bringSubview(toFront: rDot)
}
试试这个加'gesture'后,你可能工作:通过'行动:(rDot toFront)' – Santosh
尝试添加选择:'view.bringSubview #selector(MyClass.rdotimageTapped(_ :))' –
@桑托斯谢谢你打印出来,但现在图像不会隐藏或不被隐藏。这两个图像都在不同的viewController上。 – Tabj