1

指定された UIViewController サブクラス (MyViewController など) 内のすべてのユーザー タッチを追跡したいと考えています。

この UIViewController には UIButtons などの UIKit 要素が含まれている可能性があるため、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 に答える