这在iOS中是否可行,或者我是否真的必须在每个视图控制器中注册摇动事件检测?
我希望我的应用程序的用户可以摇动他的iPhone以返回根目录。无论当前的视图控制器如何。
答案 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方法。