将 UIGestureRecognizer 的所有事件从一个 UIView 传递到另一个 UIView(子视图)[重复]

Posted

技术标签:

【中文标题】将 UIGestureRecognizer 的所有事件从一个 UIView 传递到另一个 UIView(子视图)[重复]【英文标题】:Pass all the events of a UIGestureRecognizer from one UIView to another UIView (subview) [duplicate] 【发布时间】:2014-01-02 23:49:32 【问题描述】:

我有一个带有手势识别器的 UIView。

在某些情况下(例如在某个区域点击)我想将点击传递给子视图。

子视图的用户交互被禁用(例如,因为我不希望它接收滑动)。

如果我希望它接收事件 - 如何实现。

【问题讨论】:

对不起,Avner,问同样的问题不太礼貌twice in the same day 为了清楚起见,它使用不同的语言。也许第一个解释不清楚。我真的只是想要一个答案 如果您发现您的原始问题不清楚,您应该对其进行编辑以使其更清晰,而不是开始新问题(除非是针对新问题)。 复制您的问题会阻止任何人撰写经过深思熟虑的回复。请耐心等待 - 好的答案很少能很快得到。 应该编辑您之前的问题,以便在必要时澄清或扩展,而不是创建第二个问题。 【参考方案1】:

这里是处理手势事件的代码。

 UIPanGestureRecognizer * moveGesture = [[UIPanGestureRecognizer alloc]
                                        initWithTarget:self
                                     action:@selector(onMove:)];
 [moveGesture setDelegate:self];

将 UIGestureRecognizerDelegate 添加到您的视图类委托中,然后实现这样的功能:

- (void) onMove:(UIPanGestureRecognizer*)gesture 
 switch (gesture.state) 
    case UIGestureRecognizerStateBegan:
    
         //handle the events here
         //and don't forget if you want to your view receive touches
         //userInteraction must be enabled.

         //if you want to get touch in your super view you just do this:
         CGPoint pointToSuperview = [gesture locationInView:self.superview];
         //this is the point where touch is received to your superview 
    
        break;
    case UIGestureRecognizerStateChanged:
    

    
        break;
    case UIGestureRecognizerStateEnded:
    case UIGestureRecognizerStateCancelled:
    case UIGestureRecognizerStateFailed:
    

    
        break;
    default:
        break;


【讨论】:

这根本没有回答我的问题!

以上是关于将 UIGestureRecognizer 的所有事件从一个 UIView 传递到另一个 UIView(子视图)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不阻止 textView 触摸的情况下向所有 UITextView 添加一个 UIGestureRecognizer

UIGestureRecognizer

UIGestureRecognizer

UITouch && UIGestureRecognizer

如何将 UIGestureRecognizer 限制为特定的 UIView?

将 UIGestureRecognizer 事件传递给子 TableViewCells