将触摸事件传递给View Controller的所有子视图

时间:2009-09-09 23:09:31

标签: iphone subview argument-passing

我有一个视图控制器,可以在其上创建多个子视图。所有子视图和视图控制器都接受触摸。如何将触摸点信息传达给屏幕上的所有子视图?请记住,每个子视图都覆盖整个屏幕,所以在添加一些后,它有点像书中的页面。也就是说,用户无法直接触摸顶部子视图下方的任何子视图。我尝试过使用[self.nextResponder touchesBegan:touches withEvent:event]但是这只会将顶部子视图中的触摸信息发送到超越屏幕上所有其他子视图的超级视图。感谢

3 个答案:

答案 0 :(得分:3)

我会在所有内容上放置另一个子视图。这将获取您感兴趣的所有触摸并将它们传递回视图控制器。然后,您的视图控制器将遍历其所有子UIViews,为其提供事件。

即。

之类的东西
for (UIView *view in subviews)
  [view touchesBegan:touches withEvent:event];

虽然假设您要传递事件的所有子视图都是视图控制器的子视图。

答案 1 :(得分:0)

仅在superview中使用触摸方法。从那里迭代所有子视图并向他们发送触摸方法。

答案 2 :(得分:-2)

或者,您可以将NSNotification发送到所有子视图。在subvews类中,您可以更好地控制并可以处理通知以执行某些任务。