gpt4 book ai didi

ios - 在 `touchesBegan:withEvent:` 之后禁用所有 UIPanGestureRecognizers

转载 作者:行者123 更新时间:2023-12-01 19:09:22 27 4
gpt4 key购买 nike

有没有办法禁用所有 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];

出于某种原因,您不能乱用 UIGestureRecognizerUIScrollView或其任何子类;这就是为什么我包含了平移的检查和替代禁用/启用。

关于ios - 在 `touchesBegan:withEvent:` 之后禁用所有 UIPanGestureRecognizers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604982/

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