gpt4 book ai didi

ios - 仅捕获 UIView 2 手指 UIPanGestureRecognizer

转载 作者:技术小花猫 更新时间:2023-10-29 11:18:03 29 4
gpt4 key购买 nike

我的 View Controller 中有几个 UIScrollView。我想覆盖一个通过 UIPanGestureRecognizer 捕获 2 根手指滑动的 View ,它不会记录 UIScrollView 滑动手势。

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

效果类似于四指滑动切换应用。

最佳答案

您不需要叠加 View 。
首先实现 UIPanGestureRecognizer 将处理 2 手指平移并将其分配给包含 UIScrollViews

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

使用 UIGestureRecognizerDelegate 处理带有 UIScrollView 平移手势的 2 手指平移

- (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");
}

关于ios - 仅捕获 UIView 2 手指 UIPanGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301286/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com