UISwipeGestureRecognizer 和 UIScrollView

Posted

技术标签:

【中文标题】UISwipeGestureRecognizer 和 UIScrollView【英文标题】:UISwipeGestureRecognizer and UIScrollView 【发布时间】:2012-10-13 12:45:32 【问题描述】:

我有一个垂直滚动视图(不能水平滚动),默认情况下我的标签栏是隐藏的。但是,您可以通过在屏幕底部区域向上滑动,将标签栏向上拉。(内容需要很大的垂直空间) 我的困境是:我希望能够在滚动视图的底部区域检测到向上滑动的手势,而滚动视图不会向下滚动。所以我想在底部区域放置一个透明视图,只检测向上滑动。但这有一个问题,虽然那个视图是透明的,但我所有的触摸事件都被那个视图拦截了,并没有转发到滚动视图。

是否可以只将点击转发到我的滚动视图,这样我仍然可以按下当前位于滚动视图底部区域的按钮?

我知道奇怪的问题,但我无法通过有效的解决方案找到类似的问题。

我的滚动视图代码:

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 30, 320, self.view.frame.size.height - 50)];
scrollView.showsVerticalScrollIndicator = YES;
scrollView.tag = 0;
scrollView.backgroundColor = [UIColor clearColor];
scrollView.delegate = self;
scrollView.maximumZoomScale = 1.0;
scrollView.clipsToBounds = NO;
scrollView.minimumZoomScale = 1.0;
scrollView.scrollEnabled = YES;
scrollView.pagingEnabled = YES;
scrollview.contentSize = CGMakeSize(320, xxxx);

我的透明视图代码:

UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc]
                                      initWithTarget:self
                                      action:@selector(showTabBar)];
swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
UIView *swipeLayer = [[swipeLayer alloc] initWithFrame:CGRectMake(30, self.view.frame.size.height - 80, 260, 40)];
[hideButtonSwipeActions addGestureRecognizer:swipeUp];
[hideButtonSwipeActions setBackgroundColor:[UIColor clearColor]];
//[hideButtonSwipeActions setUserInteractionEnabled:NO];

...
[swipeUp release];

非常感谢您的帮助:)

【问题讨论】:

我真的不明白你在问什么。你想在滚动视图的底部有一个透明的视图,这样你就可以在上面滑动? 那种。我有一个全屏滚动视图,它只能垂直滚动。现在想象一下,您希望能够仅在窗口底部实现向上滑动手势。所以我在滚动视图上放置了一个透明视图以接收滑动手势,但它不会将正常的触摸事件转发到滚动视图 - 这就是问题所在。 【参考方案1】:

如果你使用触摸的坐标 (0,480) 来跟踪 View 底部?

【讨论】:

【参考方案2】:

您是否尝试过将底部 UIView 的 userInteractionEnabled 属性设置为 NO?它应该仍然允许您的滑动识别器工作,但是它应该阻止视图吞下正常的触摸。

【讨论】:

以上是关于UISwipeGestureRecognizer 和 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

识别用户剪切/滑动手势 (UISwipeGestureRecognizer)

UISwipeGestureRecognizer 滑动长度

UISwipeGestureRecognizer 只有一个方向工作

如何检测 UISwipeGestureRecognizer 的结束?

如何使 UISwipeGestureRecognizer 在 UIScrollView 中工作

UISwipeGestureRecognizer 没有触发