将UISwipeGestureRecognizer附加到多个视图

时间:2013-08-10 21:49:11

标签: ios objective-c uiswipegesturerecognizer

我有一个具有普通视图的View Controller。在该视图中,我有4个子视图。我需要每个人对UISwipeGestureRecognizer做出反应。我将视图连接到Interface Builder中的UISwipeGestureRecognizer,并将UISwipeGestureRecognizer挂钩到IBAction。一切都很好;他们都对UISwipeGestureRecognizer作出反应。

但是,我需要采取不同的行动,具体取决于所谓的IBAction。我该怎么办?这是IBAction代码:

- (IBAction)swipe:(UISwipeGestureRecognizer *)sender
{
    switch (view)
    {
        case view1:
            //do something
            break;

        case view2:
            //do something
            break;

        case view3:
            //do something
            break;

        default:
        //do something
        break;
    }
}

我该如何处理?

2 个答案:

答案 0 :(得分:1)

我会为每个视图分配一个标签。这样,你仍然可以使用你的switch语句来区分它们,但不必保持对每个视图的引用。 E.x:

- (IBAction)tapSignature:(UISwipeGestureRecognizer *)sender
{
    NSLog(@"swiped");

    switch (sender.view.tag)
    {
        case 1:
            NSLog(@"1");
            break;

        case 2:
            NSLog(@"2");
            break;

        case 3:
            NSLog(@"3");
            break;

        default:
            NSLog(@"4");
            break;
    }
}

答案 1 :(得分:0)

- (IBAction)swipe:(UISwipeGestureRecognizer *)sender
{
    if (sender.view == view1) {
        //do something
    }
    if (sender.view == view2) {
        //do something
    }
    if (sender.view == view3) {
        //do something
    }
}

不要简单地复杂化。此外,如果你想将同一个控制器与另一个nib一起使用,那么使用标签将迫使你在另一个笔尖中定义相​​同的标签,这是糟糕的设计。