我已经创建了一个日期组件,并且遇到了GestureRecognizer的问题。
第一行是带标签的StackView。如果我附加了TapGestureRecognizer,则会触摸它。以下行是Stackview中由标签和图像视图组成的子视图。我可以将识别器添加到子视图,标签或图像视图中。它永远不会被解雇,我确保启用了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()
}
你可以在这里找到一个小问题:#{3}}
答案 0 :(得分:1)
问题我可以看到你的视图必须覆盖图像和标签
并且您要向所有人添加UITapGestureRecognizer
,以便添加到最后一个对象说视图(图像和标签覆盖)上,以便它可能无法获得点击事件
您需要三个不同的UITapGestureRecognizer
对象,您无法在不同的视图上添加相同的点击手势
希望它可以解决您的问题
答案 1 :(得分:0)
对于每个视图( Label / Imageview ),您应该创建一个点击对象,而不是添加到它们的同一个点击对象。 。