繁体   English   中英

iOS:未触发UIView中的TapGestureRecognizer

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM