iOS:UIView中的TapGestureRecognizer未被触发

时间:2017-12-06 15:10:03

标签: ios swift uikit

我已经创建了一个日期组件,并且遇到了GestureRecognizer的问题。

enter image description here

第一行是带标签的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}}

2 个答案:

答案 0 :(得分:1)

问题我可以看到你的视图必须覆盖图像和标签 并且您要向所有人添加UITapGestureRecognizer,以便添加到最后一个对象说视图(图像和标签覆盖)上,以便它可能无法获得点击事件

您需要三个不同的UITapGestureRecognizer对象,您无法在不同的视图上添加相同的点击手势

希望它可以解决您的问题

答案 1 :(得分:0)

对于每个视图( Label / Imageview ),您应该创建一个点击对象,而不是添加到它们的同一个点击对象。 。