如何在父视图中禁用点击手势?

Posted

技术标签:

【中文标题】如何在父视图中禁用点击手势?【英文标题】:How can disable tap gesture in parent view? 【发布时间】:2018-01-22 02:48:50 【问题描述】:

我有 2 个视图。视图 1 是超级视图,我在超级视图中添加了点击手势。视图 2 是 Collectionview,当我点击 Collectionview 单元格时,Collectionview 中的两个事件 didSelectItemAt 和 superview 中的点击手势都被调用。当我点击 collectionview 单元格时,如何禁用超级视图中的点击手势?

【问题讨论】:

你有可以帮助我们复制东西的代码吗? 【参考方案1】:

您可以尝试在父视图上将userInteractionEnabled 设置为false

例如view.userInteractionEnabled = false

文档userInteractionEnabled

--更新

您可以实现gestureRecognizer委托,然后检查是否是您的视图调用了touch属性;

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool 
    if touch.view == youview 
        return false
    
    return true

【讨论】:

但是当我点击collectionviewcell外部并且如果你在父视图中设置userInteractionEnabled = false你不能点击collectionview因为collectionvew在父视图中时我需要点击

以上是关于如何在父视图中禁用点击手势?的主要内容,如果未能解决你的问题,请参考以下文章

禁用 UIScrollView 手势

如何在 ios 11 中使用主详细信息视图禁用向后滑动手势?

当用户直接点击标签栏项目时,如何禁用滑动动画?

如何在iOS 7中仅针对一个视图禁用后退手势

禁用 UITextField 时如何在 leftView/rightView 中启用点击?

在 contentView 中禁用侧视图上的手势