【发布时间】:2011-05-31 22:32:33
【问题描述】:
我正在尝试实现一个 UIResponder 对象,该对象将允许我记录屏幕活动,然后将事件传递给下一个响应者以允许应用程序正常进行。我已经对此进行了一段时间的研究,并看到了两种应该起作用的方法:要么创建根视图并忽略放置在其顶部的子视图中的触摸,从而允许根视图处理它们;或者创建一个添加到所有子视图的 GestureRecognizer。我的应用程序有多个视图在主窗口中交换进出。
我已经尝试了这两种方法,但最终陷入了同样的僵局:我在我的视图(或识别器)中收到了 touchesBegan/touchesMoved/touchesEnded 事件,但是当我将它们发送到响应者链时没有任何反应。我已经尝试了以下所有方法。请注意,“view”是从 touch.view 派生的,view.superview 是我的“loginView”对象,其中包含被点击以将我带到此处的按钮:
[view hitTest:frame.origin withEvent:event];
[view touchesBegan:touches withEvent:event];
[view.superview hitTest:frame.origin withEvent:event];
[view.superview touchesBegan:touches withEvent:event];
[[view nextResponder] touchesBegan:touches withEvent:event];
[[view nextResponder] hitTest:frame.origin withEvent:event];
[[[view superview] nextResponder] touchesBegan:touches withEvent:event];
[[view superview] hitTest:frame.origin withEvent:event];
这些都不起作用,事实上 '[[view nextResponder] hitTest...' 会产生警告。
我已经尝试过 resignFirstResponder,甚至打算尝试 sendAction,但我现在只是抓住了救命稻草。我尝试将我的观点放在链的底部和顶部并获得相同的结果。显然我遗漏了一些东西,但我看不到什么。
谁能告诉我下一步该尝试什么?
--山姆
【问题讨论】:
标签: iphone xcode ios ipad uiresponder