我很难理解iPhone应用程序中响应器链的工作原理。如何恢复以前的firstResponder?
我的情况如下。我有两个UIViewControllers安装在标签栏控制器上。称它们为视图控制器A和B.它们在意义上无关,因为它们都没有引用或不了解对方。
A和B需要到远程控制事件(播放/暂停/停止按钮)作出响应。控制器A一直想要响应这些事件,而B只想在用户选择某个功能时对它们做出响应。当我的应用程序启动时,A立即成为第一响应者,并能够接收遥控事件。当B想要接收的事件,它成为第一个响应,然后开始得到事件,而不是A.
当B使用遥控器完成,会出现问题。此时,B自己调用resignFirstResponder。此后,A和B都不能获得任何遥控事件。
我以为,当B辞职第一响应状态,以前是第一个响应者将被恢复的事情。这不是它的工作原理吗?
如果不是,我该如何将A还原为第一响应者?请记住,A和B是单独的选项卡,因此B没有对A的引用或者知道A应该是第一个响应者。所以我不想在A上明确地调用becomeFirstResponder。相反,我需要的是一种获得前一个响应者并恢复它的方式(我认为)。我有点困惑,为什么这不会自动发生。
感谢, 弗兰克
谢谢,我试了一下,你的解释是有道理的。视图B是否成为第一响应者实际上并不重要。只要我切换到其选项卡,视图A就停止成为第一响应者,并停止获取远程控制事件。 在我的情况下,常见的超级视图可能是标签栏控制器的视图。我必须继承UITabBarController来做我想要的吗? – user332000 2010-07-13 04:50:05
是的 - 子类UITabBarController似乎工作。当没有其他人在监听时,该子类获取远程控制事件。现在我所要做的就是找出将事件派往正确位置的一种优雅方式。 – user332000 2010-07-13 05:04:41
调用A的“becomeFirstResponder:”方法将第一响应者交给A.IIRC。 – Kalle 2010-07-13 08:08:59