gpt4 book ai didi

ios - 识别后使UIGestureRecognizer失败的方法?

转载 作者:可可西里 更新时间:2023-11-01 03:08:22 25 4
gpt4 key购买 nike

我有一个看似基本但无法弄明白的问题。

基本问题是:当手势识别器处于 UIGestureRecognizerStateBegan 或 UIGestureRecognizerStateChanged 时,如何以编程方式将手势识别器从处理程序置于失败状态?

更详细的解释:我在 UIScrollView 中有一个用于 UIView 的长按手势识别器。我做了

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

因为一旦用户将手指放在 View 上,我就无法让 ScrollView 滚动。它是像 safari 一样的基本触摸,您将手指按住链接,突出显示链接,但向上或向下滚动 - 然后链接不突出显示, ScrollView 移动。

我现在可以让这大部分工作,因为两种手势都被识别了,但如果我可以检测到 longpress gesturerecognizer 的 StateChanged 中的移动会更好,如果它超过 20 像素左右,只需以编程方式使 longpress 失败。

这可能吗?还是我挖错了地方?

最佳答案

我发布问题后发现的另一个问题..

这是我现在在手势识别器处理程序中所做的:

else if (sender.state == UIGestureRecognizerStateChanged) {
CGPoint newTouchPoint = [sender locationInView:[self superview]];

CGFloat dx = newTouchPoint.x - initTouchPoint.x;
CGFloat dy = newTouchPoint.y - initTouchPoint.y;
if (sqrt(dx*dx + dy*dy) > 25.0) {
sender.enabled = NO;
sender.enabled = YES;
}
}

因此,如果手指在任何方向移动超过 25 个像素,将 enabled 属性设置为 NO 将使识别器失败。所以这将实现我想要的!

关于ios - 识别后使UIGestureRecognizer失败的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338358/

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