【问题标题】:Getting all touch events of an app获取应用的所有触摸事件
【发布时间】:2014-03-26 14:33:33
【问题描述】:

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

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

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

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

【问题讨论】:

标签: ios objective-c uigesturerecognizer


【解决方案1】:

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

【讨论】:

  • 正如我所提到的,我不能这样做,因为我正在开发一个框架。
【解决方案2】:

我设法通过使用附加到 keyWindow 的自定义手势识别器并使用以下方法来使其工作:

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

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

如果有人知道我为什么不应该这样做,我很乐意听到。

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多