[英]iOS: TapGestureRecognizer in UIView not fired
我创建了一个日期组件,并且在GestureRecognizer中遇到了问题。
第一行是带有标签的StackView。 如果我连接了TapGestureRecognizer,则会在触摸时触发。 以下几行是Stackview中由标签和图像视图组成的子视图。 我可以将Recognizer添加到子视图,标签或图像视图。 它永远不会被解雇,我确保已启用userInteraction。
可能是什么问题呢?
这是我添加识别器的示例:
func addTap(){
dayLabel.isUserInteractionEnabled = true
imageView.isUserInteractionEnabled = true
isUserInteractionEnabled = true
tap1 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
tap2 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
tap3 = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
dayLabel.addGestureRecognizer(tap1!)
imageView.addGestureRecognizer(tap2!)
addGestureRecognizer(tap3!)
}
@objc func handleTap(recognizer: UITapGestureRecognizer){
logger.debug("tap")
changeSelection()
}
您可以在此处找到一个归结为问题的小演示项目: https : //github.com/ogezue/datedemo
我看到的问题是,您的视图必须覆盖有图像和标签,并且您UITapGestureRecognizer
所有视图添加相同的UITapGestureRecognizer
,以便将其添加到最后一个对象说视图(覆盖有图像和标签),因此它可能无法获得点击事件
您需要UITapGestureRecognizer
三个不同的对象,您不能在不同的视图上添加相同的点击手势
希望它可以解决您的问题
对于每个视图( 标签/图像视图),您都应该创建一个水龙头对象,而不是将两者同时添加到其中。 。 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.