仅捕获UIView 2手指UIPanGestureRecognizer [英] Capture only UIView 2 finger UIPanGestureRecognizer

查看:286
本文介绍了仅捕获UIView 2手指UIPanGestureRecognizer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的视图控制器中有几个 UIScrollView s。我希望通过 UIPanGestureRecognizer 覆盖捕获2指滑动的视图,该视图不会记录 UIScrollView 滑动手势。 / p>

当我用双指平移手势对我的内容进行透明视图时,我的水龙头和1次手指滑动都没有被检测到。我试图覆盖 pointInside:方法返回
然后它不会记录我的2个手指滑动。



效果类似于4指滑动来更改应用。

解决方案

你不需要叠加视图。

首先实现 UIPanGestureRecognizer ,它将处理2个手指平移并将其分配给你的视图包含 UIScrollView s

  UIPanGestureRecognizer * panGestureRecognizer = [[UIPanGestureRecognizer alloc] 
initWithTarget:self
action:@selector(handlePan :)];
panGestureRecognizer.delegate = self;
panGestureRecognizer.minimumNumberOfTouches = 2;
panGestureRecognizer.maximumNumberOfTouches = 2;
[self.view addGestureRecognizer:panGestureRecognizer];

使用 UIGestureRecognizerDelegate 处理2个手指平移 UIScrollView 平移手势

   - (BOOL)gestureRecognizer:(UIGestureRecognizer *) gestureRecognizer 
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}

最后你可以处理2个手指泛

   - (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer 
{
NSLog(@pan);
}

如果你想停止滚动 UIScrollView 当检测到两个手指平移时,您可以禁用并启用 UIScrollView 平移识别器

   - (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer 
{
if(gestureRecognizer.state == UIGestureRecognizerStateBegan)
{
_scrollView.panGestureRecognizer.enabled = NO ;
}
if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
_scrollView.panGestureRecognizer.enabled = YES;
}
NSLog(@pan);
}


I have a couple of UIScrollViews in my view controller. I want to overlay a view that captures a 2 finger swipe via UIPanGestureRecognizer which will not record the UIScrollView swipe gestures.

When I put a transparent view over my content with a 2 finger pan gesture, my taps and 1 finger swipes are not detected. I tried overwriting the pointInside: method to return NO but then it doesn't record my 2 finger swipe.

The effect is similar to the 4 finger swipe to change apps.

解决方案

You don't need an overlay view.
First implement UIPanGestureRecognizer that will handle 2 finger pan and assign it to your view that contains UIScrollViews

UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]
                                                initWithTarget:self 
                                                        action:@selector(handlePan:)];
panGestureRecognizer.delegate = self;
panGestureRecognizer.minimumNumberOfTouches = 2;
panGestureRecognizer.maximumNumberOfTouches = 2;
[self.view addGestureRecognizer:panGestureRecognizer];

Use UIGestureRecognizerDelegate to handle 2 finger pan with UIScrollView pan gesture

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

And finally you are able to handle 2 fingers pan

- (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer
{
    NSLog(@"pan");
}

If you want to stop scrolling UIScrollView when two finger pan is detected you can disable and enable UIScrollView pan recognizers

- (void)handlePan:(UIPanGestureRecognizer *)gestureRecognizer
{
    if(gestureRecognizer.state == UIGestureRecognizerStateBegan)
    {
        _scrollView.panGestureRecognizer.enabled = NO;
    }
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
    {
        _scrollView.panGestureRecognizer.enabled = YES;
    }
    NSLog(@"pan");
}

这篇关于仅捕获UIView 2手指UIPanGestureRecognizer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆