跟踪指定 UIViewController 子类的所有触摸
Posted
技术标签:
【中文标题】跟踪指定 UIViewController 子类的所有触摸【英文标题】:Tracking all touches in for a designated UIViewController subclass 【发布时间】:2013-01-06 22:42:37 【问题描述】:我想跟踪指定 UIViewController 子类中的所有用户触摸,例如我的视图控制器。
由于这个 UIViewController 可能包含 UIKit-Elements,例如 UIButtons 等。我想在 MyViewController 的视图中将一个清晰的触摸跟踪 UIView 放在其他视图之上。
现在我将触摸事件发送到 UIView,但我不知道如何将触摸委托给其他子视图。
我已经尝试遍历 MyViewController 的所有视图子视图(触摸跟踪 UIView 除外)并向它们发送 touchesBegan:withEvent:、touchesMoved:withEvent: 等。
但这不适用于 UICollectionViews。
我基本上需要的是跟踪 MyViewController 的视图框架中的所有触摸事件。 MyViewController 本身可以继承需要响应触摸事件的各种其他视图。
我还在这里 (http://***.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];
【问题讨论】:
【参考方案1】:我设法通过覆盖我的 UIWindow 子类中的 sendEvent: 来获得所需的触摸跟踪。
这很好用。
这里是任何人都需要的 github 项目:https://github.com/bhr/BHTouchTracking
【讨论】:
以上是关于跟踪指定 UIViewController 子类的所有触摸的主要内容,如果未能解决你的问题,请参考以下文章
UIViewController 的 Swift 子类化子类
为啥 UIViewController 是 UIResponder 的子类?