【问题标题】:Changing UIView userInteractionEnabled in GestureRecognizer does not work在 GestureRecognizer 中更改 UIView userInteractionEnabled 不起作用
【发布时间】:2015-05-20 05:22:30
【问题描述】:

我想在UIPanGestureRecognizer 回调期间更改 UIView。例如:

- (void)handleScroll:(UIPanGestureRecognizer *)recognizer
    if (recognizer.state == UIGestureRecognizerStateBegan){
        self.subview.userInteractionEnabled = NO;
    } else if (recognizer.state == UIGestureRecognizerStateEnded){
        self.subview.userInteractionEnabled = YES;
    }
}

这在 UIPanGestureRecognizer 回调中从未起作用,但如果我在 initWithFrame 方法中编写代码,它确实起作用

我也尝试在回调中使用performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>,但也没有用。

在手势识别回调中你不能做什么有什么限制吗?

【问题讨论】:

  • 查看语句self.userInteractionEnabled = NO;的顺序
  • @AshokLondhe 所以当识别开始时,我想禁用所有子视图的交互,在它结束后,我希望它们回来。顺序是我所期望的。你有什么具体的意思吗?
  • 如果你正在使用这个 if (recognizer.state == UIGestureRecognizerStateBegan){ self.userInteractionEnabled = NO;它永远不会工作......而不是 NO 写 YES 。
  • 我已经更新了问题,我现在正在更改子视图,但即使这样对我也不起作用。
  • 你使用什么样的用户交互函数。上面的代码对我有用。我用按钮试过

标签: ios uiview uigesturerecognizer


【解决方案1】:

我不小心在 UIGestureRecognizer 中将 cancelsTouchesInView 设置为 NO。将其更改为 YES 可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多