如何可靠地找到UIGestureRecognizer的正确视图?
|
我有一堆UIViews,如下图所示。红色/粉色(半透明)视图位于其他视图之上。
红色为
UISwipeGestureRecognizer
。
格林(Green)为has1ѭ。
蓝色没有识别器。
点击绿色的可见(左下)部分将触发其识别器。
点击绿色的隐藏部分不会触发其识别器(红色会阻止它)。
这就是问题所在:我希望格林触发。我怎样才能做到这一点?
实际上,视图可以是任意顺序,任意数量,并且可以是彼此的子视图,等等。但是问题是相同的:
如何可靠地找到可以处理手势(轻击或轻扫)的最上方视图?
我尝试使用下面的代码。它整齐地遍历所有视图,但是由于无法知道事件是滑动还是轻击的一部分而失败。因此,该方法始终返回红色视图。如果我从红色中移除了滑动识别器,则代码可以正常工作。
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *hitView = [super hitTest:point withEvent:event];
if (hitView == self)
{
if (self.hasASwipeRecognizer)
return self; // What if this was a tap?
if (self.hasATapRecognizer)
return self;
else
return nil;
}
else
return hitView;
}
没有找到相关结果
已邀请:
3 个回复
乏摩纶誊伟
。例如,如果通过的手势识别器是滑动识别器,则检查触摸点是否在绿色视图内并返回“ 4”。否则返回ѭ6。 如果有类似的手势识别器,那么我建议您保留一个参考并进行验证。 用法
亨尖玛次酥
嗓瑰