获取应用的所有触摸事件

时间:2014-03-26 14:33:34

标签: ios objective-c uigesturerecognizer

我一直在寻找一种拦截应用程序的所有触摸事件的方法。 我看到我可以在主窗口中添加一个手势识别器,并通过使用它的委托方法获得所有触摸:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
NSLog(@"%@",touch);
return NO;
}

这样我就不会伤害应用程序的所有其他触摸事件。 问题是我无法通过这种方式获得滑动事件。此外,我无法覆盖UIWindow sendEvents,因为我的应用程序是一个外部框架。 我也不想在顶部添加透明的UIView。

还有其他方法可以获得滑动和其他手势吗?

2 个答案:

答案 0 :(得分:0)

要拦截应用的所有触摸事件,请使用UIWindow子类并覆盖sendEvent:...。每个触摸事件都会通过这个瓶颈方法。请注意,您现在的操作水平非常低,很容易破坏一切。

答案 1 :(得分:0)

我设法通过使用附加到keyWindow的自定义手势识别器并使用该方法来实现此功能:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

这也给了我所有的触动,并且不会打扰任何其他识别器。

如果有人知道为什么我不应该这样做,我会很高兴听到它。