仅捕获 UIView 2 手指 UIPanGestureRecognizer

2024-04-08

我有几个UIScrollViews 在我的视图控制器中。我想覆盖一个捕获 2 根手指滑动的视图UIPanGestureRecognizer这不会记录UIScrollView滑动手势。

当我使用 2 根手指平移手势在内容上放置透明视图时,不会检测到我的点击和 1 根手指滑动。我尝试覆盖pointInside:返回方法NO但它不会记录我的两根手指的滑动。

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


您不需要覆盖视图。
首先实施UIPanGestureRecognizer它将处理 2 指平移并将其分配给包含以下内容的视图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处理 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");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅捕获 UIView 2 手指 UIPanGestureRecognizer 的相关文章

随机推荐