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

Posted

技术标签:

【中文标题】在 contentView 中禁用侧视图上的手势【英文标题】:Disable gesture on sideViews in contentView 【发布时间】:2017-02-25 09:36:40 【问题描述】:

我在我的 collectionView 单元格中显示三个视图。一个完整的在中间,在 contentView 的角落预览下一个和上一个。并使用 panGesture 向上滑动中间视图。如何在侧视图上禁用 panGesture?

这是图片:

我在内容视图上添加了 panGestureRecognizer。但我不想让侧视图识别手势,而且我想让侧面图像的颜色很淡。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以使用 UIGestureRecognizerDelegate。实现方法:

func wasDragged(gestureRecognizer: UIPanGestureRecognizer) 

    if gestureRecognizer.state == UIGestureRecognizerState.began 
        print("was dragged began")
    
    if gestureRecognizer.state == UIGestureRecognizerState.changed 
        print("was dragged change \(gestureRecognizer.location(in: self.view))")
        testTouches(touches: gestureRecognizer.location(in: self.view))
    
    if gestureRecognizer.state == UIGestureRecognizerState.ended 
        print("was dragged ended")
    

比实现方法来测试触摸点:

func testTouches(touches: CGPoint) 
    // Get location of touch

    let touchLocation = touches
    // Convert the location of the side views to this view controller's view coordinate system
    let sideViewFrame = self.view.convert(sideView.frame, from: sideView.superview)// Check if touch is inside side view
    if sideViewFrame.contains(touchLocation) 
            // do nothing
        
        else 
            // do something
        

【讨论】:

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

如何禁用 UITableView 上的左右滑动手势

如何在 SwiftUI 中禁用子视图上的特定状态更改动画

如何禁用 UINavigationBar 上的向右滑动手势?

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

是否可以禁用滑动手势并仅使平移手势在滚动视图中工作?

UIScrollView 不会将点击手势传播给其子项