【问题标题】:Gesture Reconizer doesn't work手势识别器不起作用
【发布时间】:2014-05-21 22:13:05
【问题描述】:

我在使用手势时遇到了一些麻烦。让我解释: 我得到了一个视图,其中包含一个 UIImageView 作为背景,一个 UIImageView 在背景上。在这个背景的图像视图中,我添加了一些包含图像和按钮的 UIView,以便用户可以编辑。当我在 ImageView 上编辑这些视图时,一切正常。但是如果我开始在 backgroundView 上编辑这些视图,它就不再起作用了。让我们展示一些图片来帮助您理解:

在此编辑视图工作正常

不工作

所有三个按钮都有自己的手势识别器。 这是因为视图不再在超级视图中而不起作用吗?我是否必须将视图添加到 self.view 而不是 imageView 才能识别每个手势?

【问题讨论】:

  • 如果视图超出其父视图的范围,它们不会响应触摸,因此您关于它为什么不工作的假设是正确的。
  • 在这种情况下,有没有办法强制这个视图响应这个手势?因为我仍然可以移动视图,即使它超出了图像视图的范围,但是按钮(关闭、调整大小和旋转)不再响应
  • 您可以将其移出超级视图,因为原始触摸发生在超级视图内。如果你在superview之外时抬起手指,你能再次移动它吗?我猜不是。据我所知,唯一的解决方案是按照您的建议将该视图添加到 self.view 中。

标签: ios objective-c uiimageview uigesturerecognizer


【解决方案1】:

覆盖以下UIGestureRecognizerDelegate 方法并确保您已设置委托。听起来您一定会看到一些冲突,这些冲突可以通过在这些方法中使用一些谨慎的逻辑来避免:

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

【讨论】:

  • 嗨。我看不出这对我有什么帮助,因为当视图超出图像视图的范围时,手势方法永远不会被触发。你能解释一下吗?
猜你喜欢
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多