在所有视图控制器中进行抖动事件检测

时间:2011-10-07 13:00:20

标签: iphone objective-c ios oop events

这在iOS中是否可行,或者我是否真的必须在每个视图控制器中注册摇动事件检测?

我希望我的应用程序的用户可以摇动他的iPhone以返回根目录。无论当前的视图控制器如何。

3 个答案:

答案 0 :(得分:1)

我是通过在UIViewController上编写一个类别来完成的。这样您就不需要子类化任何东西,即使用户界面已经完成,您也可以实现它。

在我的实施中,风险投资将响应震动,除非特定VC选择退出该机制。选择退出是通过在特定实现中将BOOL ivar设置为NO来完成的。摇动机制将使用键值编码查找此ivar,如果设置了ivar,则忽略摇动。

我通过只允许VC响应当前可见的内容来进一步改进这一点。

答案 1 :(得分:0)

已编辑的帖子(旧信息错误)

在你的情况下,我会编写自己的ViewController,其子类UIViewController,实现UIResponder的动作代理,然后调用popToRootViewController上的navigationController - 属性ViewController的。每次你创建一个新的ViewController时,你应该将你的 ViewCOntroller而不是UIViewController子类化。因此,每个ViewController都能够接收震动事件,但它只在您的代码中写入一次:)

答案 2 :(得分:0)

这只是一个猜测,但也许你可以通过继承UIApplication(而不是你的app delegate,实际的应用程序)来做到这一点。 UIApplication是一个UIResponder,因此你可以将它作为第一个响应者,并在其上提供motionBegan或motionEnded方法。