gpt4 book ai didi

objective-c - UIGestureRecognizers 冲突

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:35 24 4
gpt4 key购买 nike

我有一个重写的 UIGestureRecogniser 设计用于检测 2 次触摸,但不一定是一个接一个地检测。

我有:

- (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer
{
if ([preventingGestureRecognizer isKindOfClass:[UIRotationGestureRecognizer class]])
{
self.state = UIGestureRecognizerStateCancelled;
return YES;
}

if ([preventingGestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]])
{
self.state = UIGestureRecognizerStateCancelled;
return YES;
}

//Will prevent a conflict with a 2 finger touch only.
if ([preventingGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]])
{
if (preventingGestureRecognizer.numberOfTouches == 2)
{
self.state = UIGestureRecognizerStateCancelled;
return YES;
}
return NO;
}
self.state = UIGestureRecognizerStateRecognized;
return NO;
}

在我的 MVC 中,我还有一个旋转手势识别器。我的问题是它们相互矛盾。我的 doubleTap 手势识别器正在调用它的 Action @selector 当它应该被上面的方法阻止时。

看起来上面的方法没有被调用。我认为这是因为当两根手指接触执行旋转时有以下代码:

- (void)secondTouchRecived
{
self.state = UIGestureRecognizerStateRecognized;
}

调用 UIGestureResponders 操作方法并绕过预防方法。我尝试将其更改为 UIGestureRecogniserStateBegan 但这似乎也绕过了预防方法。

最佳答案

如何通过将旋转、滑动和点击手势识别器传递到 requireGestureRecognizerToFail: 在您的自定义手势识别器上来指定依赖项?这将阻止您的手势识别器在旋转识别器有机会处理触摸之前转换到 Recognized 状态。

关于objective-c - UIGestureRecognizers 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098808/

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