在模拟器中滑动时,UISwipeGestureRecognizer 不会发送到 IBAction 方法

Posted

技术标签:

【中文标题】在模拟器中滑动时,UISwipeGestureRecognizer 不会发送到 IBAction 方法【英文标题】:UISwipeGestureRecognizer isn't sent to an IBAction method when swiping in the simulator 【发布时间】:2014-10-21 08:50:30 【问题描述】:

我将两个滑动手势拖到视图控制器中的图像视图中,一个用于向右滑动,另一个用于向左滑动。然后我将它们都连接到视图控制器的头文件作为 IBAction。我在 IBAction 方法中编写了一些代码,但问题是当我在运行应用程序时向左/向右滑动时它永远不会被调用。以下是代码示例:

- (IBAction)handleSwipe:(UISwipeGestureRecognizer *)sender

    NSLog(@"swiped");
    NSArray *images;

    if (self.selectedRow == 0) 
        images = [[NSArray alloc] initWithObjects:@"w8.JPG",@"w7.JPG",@"w6.JPG",@"w5.JPG",@"w4.JPG",@"w3.JPG", @"w2.JPG", @"w1.JPG" ,@"w9.JPG", nil];

        UISwipeGestureRecognizerDirection direction = [(UISwipeGestureRecognizer *) sender direction];

        switch (direction) 
            case UISwipeGestureRecognizerDirectionRight:
                imageIndex++;
                break;
            case UISwipeGestureRecognizerDirectionLeft:
                imageIndex--;
                break;
            default:
                break;
        
        imageIndex = (imageIndex < 0) ? ([images count] - 1): imageIndex % [images count];
        self.imageView.image = [UIImage imageNamed:[images objectAtIndex:imageIndex]];
    

NSLog 从未显示过,所以我确信发送者没有被发送到该方法。 另一件事是我曾经在 Xcode 5 中运行相同的代码并且一切正常,最近我将 Xcode 更新到了版本 6。 我应该怎么做才能解决这个问题?

【问题讨论】:

我只是向右滑动并连接到 IBAction。它对我来说很好。检查您的连接或重新添加您的滑动手势 您使用UIScrollArea 及其缩放功能吗? ios版?如果答案是肯定的并且 iOS8 那么我有同样的问题。如果缩放适合滚动区域的内容,则会阻止滑动。如果您再缩小一点,它将开始工作(这是 IOS8 错误)。它在 iOS7 中对我有用。 我不使用 UIScrollArea 但我的部署目标是 iOS 8.1。我将它更改为 iOS 7.1,但我仍然遇到同样的问题。 你有两个滑动手势识别器还是只有一个? @lulian Popescu 我有两个滑动手势,但我只将它们都连接到一个名为 handleSwipe 的 IBAction。 【参考方案1】:

我发现了问题所在。在图像视图的属性检查器中,未选中“启用用户交互”,我启用了它。现在滑动手势可以正常工作了。

【讨论】:

以上是关于在模拟器中滑动时,UISwipeGestureRecognizer 不会发送到 IBAction 方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在从左到右滑动时禁用 ViewController 关闭?

为啥滑动手势识别器在 swift 中会出错?

Android中使用ListView实现分页刷新(线程休眠模拟)(滑动加载列表)

ios模拟器:模拟滑动和拖动

是否可以在 iOS 模拟器中进行边缘滑动?

在 iPad 模拟器中滑动和拆分视图