【问题标题】:Forcing Touches to Multiple Views强制触摸多个视图
【发布时间】:2011-06-07 16:46:16
【问题描述】:

我有两个重叠的自定义视图,它们都需要接收触摸事件(例如 touchesBegan 和 touchesMoved)。但是,我只能获取其中一个视图(顶部视图)来接收事件。我尝试使用以下方法将事件从一个视图转发到另一个视图:

[otherView touchesEnded:touches withEvent:event];

但这并不总是有效。

我需要将触摸事件同时发送到两个视图。有人可以帮忙吗?

【问题讨论】:

  • 你是不是也转发了touchesBegan,以及你一直在拦截的其他touch相关的方法?你一直在喊超级吗?
  • 叫super是什么意思?
  • Intead of [otherView touchesEnded:touches withEvent:event];使用 [super touchesEnded:touches withEvent:event];

标签: iphone uiview touch gestures touchesbegan


【解决方案1】:

如果你拦截了一个触摸,你通常应该在方法结束时调用[super methodYouAreIntercepting],如果你仍然希望触摸通过下一层。如果您这样做,并且两个视图直接在彼此之上,那么您不需要像您一直在做的那样手动转发触摸。因为您上面的评论表明您没有在方法中调用 super,我敢打赌这会解决您的问题。

【讨论】:

  • 已解决:我正在使用 self.nextResponder,它的作用与调用 super 相同。但是,我在复制和粘贴方面犯了错误。我基本上将所有的触摸 Begand、Ended、Moved 等都转发到 touchesBegan 函数。它现在工作得很好。谢谢。
  • 调用 [super touchesBegan:withEvent:] 不起作用。如果是这样,一个普通的旧 UIView 会默认通过触摸事件,但它不会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2012-01-12
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多