2017-08-29 191 views
0

我已经添加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") 
    } 
+1

试试这个加'gesture'后,你可能工作:通过'行动:(rDot toFront)' – Santosh

+0

尝试添加选择:'view.bringSubview #selector(MyClass.rdotimageTapped(_ :))' –

+0

@桑托斯谢谢你打印出来,但现在图像不会隐藏或不被隐藏。这两个图像都在不同的viewController上。 – Tabj

回答

1

您需要携带subView向前,因为你已经把imageViewstackView。有时候,视图层次结构不能识别分接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)     
}