我正在尝试实现一个 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,但此时我只是抓住了稻草。我尝试将我的观点放在链的底部和顶部并获得相同的结果。显然我错过了一些东西,但我看不到什么。
谁能告诉我下一步该尝试什么?
——山姆