【问题标题】:How can I cancel other events when my UIPanGestureRecognizer occurs along side a UIScrollView?当我的 UIPanGestureRecognizer 与 UIScrollView 一起发生时,如何取消其他事件?
【发布时间】:2013-06-11 13:56:17
【问题描述】:

我有一个添加到 UIScrollView 的 UIPanGestureRecognizer,当遇到 UIPanGestureRecognizer 的某些情况时,我想取消触摸/平移事件进入 UIScrollView,现在我有这样的事情:

-(void)panRecognized:(UIPanGestureRecognizer *)sender {

    if(/* some logic */) {
          [sender cancelsTouchesInView];
    }
}

但是调用 [sender cancelsTouchesInView] 不会停止在我的 UIScrollView 中发生滚动。

我来自 JavaScript 背景,我倾向于期望事件以相同的方式运行,我认为这是我的失败,他们没有。我发现很难理解 iOS 中事件的处理方式。

【问题讨论】:

    标签: ios uiscrollview event-handling uipangesturerecognizer


    【解决方案1】:
    -(void)panRecognized:(UIPanGestureRecognizer *)sender {
    
        if(/* some logic */  && sender.state == UIGestureRecognizerStateBegan) {
              [self.scrollView setUserInteractionEnabled:NO];
        }
       else if(sender.state == UIGestureRecognizerStateEnded)
        {
              [self.scrollView setUserInteractionEnabled:YES];
        }
    
    }
    

    【讨论】:

    • 虽然这可行,但我希望有一个更通用的答案,可以阻止其他地方的事件。
    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多