gpt4 book ai didi

iphone - 具有 setDelegate 和 action 的 UIGestureRecognizer

转载 作者:行者123 更新时间:2023-11-28 17:33:29 26 4
gpt4 key购买 nike

我正在尝试将一个 UIPanGestureController 添加到我的 UITableView,这样我就可以检测用户是手动平移还是他们只是踢了一下并观察 View 自己滚动。原因是我想在滚动速度减慢后立即捕捉到一个单元格(想象一下命运之轮)。当然我不想在用户手动平移时捕捉。

但是,我可以使用手势 Controller (并相应地设置我的“正在手动滚动”变量)或 ScrollView 。使用 TouchBegin 事件而不是手势识别器会引入新问题,因此这不是真正的选择。

首先,我更改了 TableView 以包含 UIGestureRecognizerDelegate。

初始化 View 后,我会做...

panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTableView:)];
[panGestureRecognizer setDelegate:self];
[self.view addGestureRecognizer:panGestureRecognizer];

我实现了 Begin 函数,以设置一个 BOOL:

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
isPanning = YES;
return NO;
}

总是返回 NO 应该确保手势识别器永远不会处于事件状态,因为我想要(并且需要)使用 TableView 自己的滚动方法。

问题:从未调用我的操作“panTableView”。如果我设置委托(delegate),则会调用操作,但我无法滚动,因为手势识别器会捕获我的所有触摸。

我已经研究过目标。设置delegate后,手势识别器的view和delegate指针与self.view相同,action依然以self为目标,选择器正确。

最佳答案

尝试

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
isPanning = YES;
return YES;
}

并实现这个

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

关于iphone - 具有 setDelegate 和 action 的 UIGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10534555/

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