在模拟器中滑动时,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 关闭?