有没有办法禁用所有 UIPanGestureRecognizer
是触摸效果吗?我希望能够将所有触摸事件隔离到我的一个 subview 并让每个 super View 忽略所有触摸事件,但我只能在 touchesBegan:withEvent:
之后确定这一点.
是否可以停止我的superview的UIPanGestureRecognizer
s 在触发后与触摸交互 touchesBegan:withEvent:
?
最佳答案
要在所有 super View 中禁用和重新启用平移,您应该执行以下操作:
- (void)recursivelyEnable:(BOOL)enable panGesturesInSuperview:(UIView *)superview
{
for(UIPanGestureRecognizer *recognizer in superview.gestureRecognizers)
{
if([superview isKindOfClass:[UIScrollView class]])[(UIScrollView *)superview setScrollEnabled:enable];
else [recognizer setEnabled:enable];
}
if(superview.superview)[self recursivelyEnable:enable panGesturesInSuperview:superview.superview];
}
并像这样使用它:
//Disable panning
[self recursivelyEnable:NO panGesturesInSuperview:self.superview];
//Enable panning
[self recursivelyEnable:YES panGesturesInSuperview:self.superview];
出于某种原因,您不能乱用
UIGestureRecognizer
的 UIScrollView
或其任何子类;这就是为什么我包含了平移的检查和替代禁用/启用。
关于ios - 在 `touchesBegan:withEvent:` 之后禁用所有 UIPanGestureRecognizers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604982/