1

だから私は、呼び出されたときにいくつかのラベルを持つ単純な UIView を生成するメソッドを持っています:

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 300, 250)];
view1.backgroundColor = [UIColor redColor];
view1.userInteractionEnabled = YES;
[self.view addSubview:view1];

このメソッドを 6 回呼び出すので、画面の周りに 6 つの UIView (もちろん異なる座標を指定します) を配置します。

ユーザーがそれらのいずれかを右にスワイプしたことを検出してから、他の方法をトリガーするにはどうすればよいですか? 私はこのようなことを試しました:

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(myLabel1Tap)];
swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
[view1 addGestureRecognizer:swipeRight];

そしてメソッド:

- (void)myLabel1Tap {
}

しかし、そのメソッド内で何をすべきかわかりません。それらがすべて同じ「view1」と呼ばれている場合、どのビューがスワイプされたかをどのように知ることができますか?

4

1 に答える 1

4

ジェスチャー認識セレクターを変更して、引数を受け入れるようにします (メソッド シグネチャの後にコロンを追加することにより)。

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(myLabel1Swipe:)];

これは、ジェスチャ レコグナイザーが渡されることを意味し、ジェスチャ レコグナイザーのプロパティに基づいてアクションを実行できます。

- (void)myLabel1Swipe:(UISwipeGestureRecognizer *)recogniser
{
    UIView *swipedView = [recognizer view];
    //do whatever you want with this view
}
于 2012-12-15T12:32:11.633 に答える