3

UISplitViewControllerで構造化されたiPadプロジェクトがあります。

  • RootViewController
  • DetailviewController

どちらも、独自のクラス内でGestureRecognizerを使用してタッチを検出しています。

すべてのクラスの上に透明なUIViewを作成して、斜めのスワイプ(左下隅から右上隅まで)のみを検出したいと思います。

したがって、スワイプが検出されたら、関数を起動します。それ以外の場合は何も追加されないため、低レベルのビューでタッチを渡す必要があります。

私はこれらの2つの解決策を試しました:

  • この上部の透明なビューにGestureRecognizerを追加しますが、これにより、下位階層のビューへのすべてのタッチが非表示になります(userInteractionが有効になっている場合:もちろんはい)。

他の解決策は、このようにinitを作成することです

-(id)initWithFrame:(CGRect)frame
{
   self = [super initWithFrame:frame];
  if (self) {
    // Initialization code
    [self setBackgroundColor:[UIColor colorWithWhite:1 alpha:0.01]];
    [self setUserInteractionEnabled:NO];
 }

 return self;

}

スワイプを検出してみてください

  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

ただし、この時点では、すべてのタッチが検出されているわけではありません。

誰かが素晴らしい解決策を持っていますか?

4

3 に答える 3

2

あなたが言及しているような透明なUIViewは作成しません。'ビューにを追加しUISwipeGestureRecognizerます。これはすでにすべてのサブビューを含むビューです。デリゲートUISplitViewController内のビューにアクセスできます。app

 UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;

 // attach the swipe gesture to the view that embeds the rootView and the detailView
 UISwipeGestureRecognizer* swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:splitViewController.view action:@selector(swipeUpdated:)];
于 2012-10-25T12:50:16.403 に答える
1

UISplitViewControllerのビューにジェスチャレコグナイザーを追加するだけではいけませんか?

于 2012-10-25T12:48:28.743 に答える
0

を調べる必要がありますContainer Controllers。自分SplitViewControllerで作成して、スワイプを検出するコントローラーの上に3番目のビューを作成できます。カスタムコンテナコントローラーは非常に単純で、柔軟性があります。

于 2012-10-25T13:27:58.130 に答える