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]