Ios 禁用UIScrollView将事件拖动到特定方向,并将事件发送到super

Ios 禁用UIScrollView将事件拖动到特定方向,并将事件发送到super,ios,objective-c,uitableview,uiscrollview,uievent,Ios,Objective C,Uitableview,Uiscrollview,Uievent,我有ui视图,并在其上附加了ui测试识别器。 在UIView中,我启用了UIScrollView,并设置了内容大小,这样滚动视图就可以滚动到左侧 问题: 我希望当用户尝试向右拖动scrollView时,将事件发送到UIView,以便“UIPangestureRecognitizer”能够处理触摸事件,最后,在6小时后,我找到了它 我将UIScrollView子类化,并实现了gestureRecognizer:shouldRecognizeSimultaneouswithgestureRecogn

我有
ui视图
,并在其上附加了
ui测试识别器
。 在
UIView
中,我启用了
UIScrollView
,并设置了内容大小,这样滚动视图就可以滚动到左侧

问题:


我希望当用户尝试向右拖动scrollView时,将事件发送到UIView,以便“UIPangestureRecognitizer”能够处理触摸事件,最后,在6小时后,我找到了它 我将
UIScrollView
子类化,并实现了
gestureRecognizer:shouldRecognizeSimultaneouswithgestureRecognizer
委托方法

当用户拖动滚动视图时,此方法被称为
(BOOL)gestureRecognizer:shouldRecognizeSimultaneouswithGestureRecognizer
,默认情况下,它返回NO

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    if (self.contentOffset.x > 0 &&  self.contentOffset.x <= self.contentSize.width - self.frame.size.width) {
        //user is in middle of dragging the scrollView don't allow any other gestureRecognizer to respond
        return NO;
    }else{
        //scrollView contentOffset is 0 and user is not dragging the scrollView so let other gestureRecognizer to respond
        return YES;
    }
}
-(BOOL)GestureRecognitor:(UIGestureRecognitor*)GestureRecognitor应与GestureRecognitor:(UIGestureRecognitor*)其他GestureRecognitor同时识别{

如果(self.contentOffset.x>0&&self.contentOffset.x在尝试使用Horam的答案时,我意识到
scrollView.PangestureRecognitor
返回NO
后被切断。我想要的是我的自定义平移识别器被切断,而scrollView仍在滚动。我想这可能是手势的结果我不确定在不同的级别添加了res

然而,我找到了一个解决方案,将我的自定义手势识别器更改为检查
scrollView.contentOffset
并在其大于零的情况下不激活。我还关闭了
scrollView.bounce
属性,直到
scrollView.contentOffset
为零。在我的scrollView上向下滚动时,它会点击最后,我的手势识别器会立即接管并将superview移到我想要的地方

这是我定制的平移姿势的骨架

- (void)customPan:(UIPanGestureRecognizer*)panRecognizer
{
    if(panRecognizer.state == UIGestureRecognizerStateBegan)
    {
        //do begin stuff
    }

    if(panRecognizer.state == UIGestureRecognizerStateChanged)
    {
        if(self.scrollView.contentOffset.y > 0)
        {
            //do begin stuff to make sure it’s initialized properly when it does start to change
            self.scrollView.bounces = YES;
            return;
        }
        else
        {
            self.scrollView.bounces = NO;
        }

        //do change stuff
    }

    if(panRecognizer.state == UIGestureRecognizerStateEnded)
    {
        if(self.scrollView.contentOffset.y > 0)
        {
            //do begin stuff to make sure it’s initialized properly when it does start to change
            self.scrollView.bounces = YES;
            return;
        }
        else
        {
            self.scrollView.bounces = NO;
        }

        //do end stuff

    }
}

[myScrollView setContentSize:CGSizeZero]