Swipe Gesture Recognizer不适合我

时间:2013-12-15 16:16:15

标签: ios objective-c uiswipegesturerecognizer

我正在尝试将Swipe Gesture Recognizer添加到我的应用中,因此我可以向左或向右滑动以转到另一个视图控制器。我将对象拖动到我想要的viewcontroller,将其链接起来,所以当向右滑动时它应该带我到另一个viewcontroller。我运行模拟器,但滑动功能不会将我带到另一个视图。

创建新项目时,只需添加3个viewcontroller和滑动手势,我就可以在模拟器中滑动,它会将我带到另一个viewcontroller。但在我当前的应用程序中做同样的事情并没有做任何事情。

有什么想法吗?我试图玩启用/禁用状态,但仍然没有得到任何东西

3 个答案:

答案 0 :(得分:5)

如果您对编写代码感到满意,请尝试此操作。

UISwipeGestureRecognizer *left = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(PerformAction:)];
left.direction = UISwipeGestureRecognizerDirectionLeft ;
[self.view addGestureRecognizer:left];

UISwipeGestureRecognizer *right = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(PerformAction:)];
right.direction = UISwipeGestureRecognizerDirectionRight ;
    [self.view addGestureRecognizer:right];

现在执行以下操作:

-(void)PerformAction:(UISwipeGestureRecognizer *)sender {
    if(sender.direction == UISwipeGestureRecognizerDirectionRight) {
        NSLog(@"RIGHT GESTURE");
        // Perform your code here
    }

    if(sender.direction == UISwipeGestureRecognizerDirectionLeft) {
       NSLog(@"LEFT GESTURE");
       // Perform your code here
    }    
}

如果你想在每个视图控制器上执行此操作,那么你必须设置一个智能逻辑来执行左侧滑动和扫描的特定任务。右键滑动,基于您当前的viewcontroller。

希望有所帮助。

答案 1 :(得分:2)

有时当识别器重叠时(例如当您使用带有滑动识别器的scrollView时),它可能会导致触摸被取消。请确保没有任何内容正在中断您的识别器。

答案 2 :(得分:0)

我遇到了同样的问题,并找到了一些可能的解决方案:

  • 也许您需要使视图userInteractionEnabled为true:
    override func viewDidLoad() {
       self.view.isUserInteractionEnabled = true
       // configure your gestures ...
    }
  • 也许您的其中一个viewController具有与UISwipeGestureRecognizer重叠的TableView,在这种情况下,您可以实现this answer中的UIGestureRecognizerDelegate。