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 的结束?