0

我将 motionBegan:withEvent: 方法放在我的视图控制器中以查看它是否可以工作,但它没有被调用。在viewWillAppear中,我使视图控制器成为第一响应者,并从canBecomeFirstResponder.

此视图控制器位于拆分视图的主窗格中,因此在我摇动设备之前,第一响应者可能已更改。

但我真正的问题是如何将所有运动事件传递给我的应用程序委托中的处理程序?我真的必须在所有视图控制器中使用 motionBegan:withEvent: 方法或委托给所有第一响应者吗?难道没有办法让这样的事件在不向每个 UIResponder 中插入代码的情况下沿响应者链向上流动吗?似乎会有,但我还没有指出如何做到这一点。

4

2 回答 2

1

最简单的方法是覆盖-sendEvent:UIApplication然后您将控制所有事件

你可以使用这个类

int retVal = UIApplicationMain(argc, argv, @"myApplication", @"myAppDelegate");

另一种解决方案是制作类别或扩展-viewWillAppear: 更多信息

于 2012-05-13T19:18:34.400 回答
0

我在pass中所做的是创建一个实现motionBegan方法的UIWindow类别。在那个 motionBegan 方法中,我广播了一个自定义的 NSNotification。然后,在应用程序中任何需要运动事件的地方,只需为您的运动通知添加一个观察者。

由于类别将方法添加到对象的每个实例,即使是系统创建的窗口也会获取您的 motionBegan 方法,并做正确的事情。它工作得很好。

于 2012-05-13T20:08:44.673 回答