2

ビューにジェスチャ レコグナイザーを実装し、それを他のすべての UI コンポーネントに伝達することは可能ですか? 私がそのようなことをすると、うまくいきません:

  UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)];
  swipe.direction = UISwipeGestureRecognizerDirectionRight;

  [self.view addGestureRecognizer:swipe];
  [TitleLabel addGestureRecognizer:swipe];
  [DescLabel addGestureRecognizer:swipe];
  [_TopView addGestureRecognizer:swipe];
  [_BottomView addGestureRecognizer:swipe];
  [_ScrollView addGestureRecognizer:swipe];
  [_TableView addGestureRecognizer:swipe];

  [swipe release];

どうすればできますか?

すべてのオブジェクトをカバーする透明なビューをビューに追加する必要がありますか? または、これを行うためのインテリジェントな方法はありますか?

4

1 に答える 1

0

ただし、完全を期すために、複数のコンポーネントに対する同じ認識機能に関して、あなたの調査結果は正しいです...

NSInteger count = 1;
NSInteger total = [[self.view subviews] count];
for (id obj in [self.view subviews])
{
    NSLog(@"testing object %i of %i", count, total);
    count++;

    if ([obj respondsToSelector:@selector(addGestureRecognizer:)])
    {
        UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)];
        swipe.direction = UISwipeGestureRecognizerDirectionRight;
        [obj addGestureRecognizer: swipe];
        [swipe release];
        NSLog(@"swipe added");
    }
}

私が予想する唯一の問題は、レコグナイザーを適用したいオブジェクトのいずれかが、既に のサブビューであるビュー内に埋め込まれている場合ですself.view。次に、見つかった のサブビューがself.viewクラス typeUIViewであるかどうかを確認する必要があり、そのビューのサブビューなどを反復処理する必要がある場合は、

于 2012-05-01T16:15:42.613 に答える