1

我想跟踪指定的 UIViewController 子类中的所有用户触摸,例如 MyViewController。

由于这个 UIViewController 可能包含 UIKit-Elements,例如 UIButtons 等。我想在 MyViewController 的视图中的其他视图之上放置一个清晰的触摸跟踪 UIView。

现在我将触摸事件发送到 UIView,但我不知道如何将触摸委托给其他子视图。

我已经尝试遍历所有 MyViewController 的视图子视图(触摸跟踪 UIView 除外)并向它们发送 touchesBegan:withEvent:、touchesMoved:withEvent: 等。

但这不适用于 UICollectionViews。

我基本上需要的是跟踪 MyViewController 的视图框架中的所有触摸事件。MyViewController 本身可以继承需要响应触摸事件的各种其他视图。

我还在这里(http://stackoverflow.com/questions/8423174/detecting-all-touches-in-an-app)找到了继承 UIWindow 并覆盖 sendEvent 的想法:这在我的情况下是可能的,但后来我无论 MyViewController 是否可见,都必须启用/禁用触摸跟踪。另外我还不知道如何区分 touchesBegan:withEvent、touchesMoved:withEvent: 等。

提前致谢。

干杯,浴缸

在 MyViewController.m

- (void)loadView
{
    [super loadView];

    VETouchTrackingView *touchTrackingView;
    touchTrackingView = [[VETouchTrackingView alloc] initWithFrame:self.view.frame];
    touchTrackingView.userInteractionEnabled = YES;

    self.touchTrackingView = touchTrackingView;
    [self.view addSubview:self.touchTrackingView];
    [self.view bringSubviewToFront:self.touchTrackingView];
}
4

1 回答 1

1

我设法通过覆盖我的 UIWindow 子类中的 sendEvent: 来获得我需要的触摸跟踪。

这很好用。

这里是任何也需要这个的人的 github 项目:https ://github.com/bhr/BHTouchTracking

于 2013-01-08T03:50:26.433 回答