UITapGestureRecognizer 的动作在进行中时无法调用?

Posted

技术标签:

【中文标题】UITapGestureRecognizer 的动作在进行中时无法调用?【英文标题】:Action of UITapGestureRecognizer cannot be called while it’s already in progress? 【发布时间】:2014-05-07 08:27:38 【问题描述】:

我有一个UITapGestureRecognizer 设置,它执行0.8s UIView 动画。我想要做的是允许用户在0.8s 期间打断。我将处理事物的动画方面(即使事物从其当前位置开始动画),但当前的问题是在 0.8s 期间的任何进一步点击都不会从识别器调用 @selector。在第一次通过 @selector 完成之前,任何后续的点击都会被阻止。

只是为了确认一下,我需要一种方法来允许调用来自同一 UITapGestureRecognizer 的同一 @selector,即使它还没有 return。那时我可以覆盖动画,告诉它从当前位置开始,并让它完成,即使用户向识别器发送垃圾邮件。

有没有办法做到这一点?我考虑过线程,但我的印象是我不应该在后台线程上进行 UI 更新,所以当有可能是首选方式时,我犹豫是否尝试。

【问题讨论】:

你能发布你的动画代码吗? 这只是一个标准的 UIView animateWithDuration 调用,它设置了一个转换。 【参考方案1】:

好吧,如果你想在动画期间允许用户交互,添加 UIViewAnimationOptionAllowUserInteraction 选项,这里是示例,

[UIView animateWithDuration:0.8
                      delay:0.0
                    options:UIViewAnimationOptionAllowUserInteraction
                 animations:^
                     // your animations
                  completion:^(BOOL finished) 
                     // completion
                 ];

【讨论】:

嗯,明白了。它在被调用时阻塞了整个线程。有趣。

以上是关于UITapGestureRecognizer 的动作在进行中时无法调用?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UITapGestureRecognizer 无法识别的选择器

UIlabel 中的 UITapGestureRecognizer 错误

UITapGestureRecognizer 的问题

带有点击事件的 UITapGestureRecognizer

UIButton 上的 UITapGestureRecognizer

为啥 UIButton 会覆盖 UITapGestureRecognizer?