UIImageView上的手势识别器(滑动)

我正在尝试使用此代码扫描UIImageView时的NSLog,但由于某种原因它不起作用。 任何想法 ?

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@"image2.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = [[UIScreen mainScreen] bounds]; [self.view addSubview:imageView]; UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)]; [recognizer setNumberOfTouchesRequired:1]; [imageView addGestureRecognizer:recognizer]; } - (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer { NSLog(@"right swipe"); } 

启用默认禁用的UIImage视图用户交互

 [imageView setUserInteractionEnabled:YES]; 

添加滑动手势事件

 UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; // Setting the swipe direction. [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight]; // Adding the swipe gesture on image view [imageView addGestureRecognizer:swipeLeft]; [imageView addGestureRecognizer:swipeRight]; 

处理滑动手势事件

 - (void)handleSwipe:(UISwipeGestureRecognizer *)swipe { if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { NSLog(@"Left Swipe"); } if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { NSLog(@"Right Swipe"); } } 

一定要添加imageView.userInteractionEnabled = YES; 在你创build你的UIImageView之后。

这允许用户与您的视图交互 ,如点击,拖动,滑动或其他一般手势。

请参阅这里的文档。

在Swift 3

  ImageView.isUserInteractionEnabled = true let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.getSwipeAction(_:))) self.ImageView.addGestureRecognizer(swipeGesture) func getSwipeAction( _ recognizer : UISwipeGestureRecognizer){ if recognizer.direction == .right{ print("Right Swiped") } else if recognizer.direction == .left { print("Left Swiped") } } 

与其他UIViews不同,默认情况下, UIImageView disabled了用户交互。 在代码中join这一行,手势应该按照预期工作:

 imageView.userInteractionEnabled = YES; 

我遇到了麻烦,我可以让UISwipeGestureRecognizer工作,如果我把它添加到self.view,而不是单个的UIImageView。 感谢Jeff Ayan提供的Swift 3代码示例。 如果使用界面构build器,还可以在属性检查器下检查UIImageView的User Interaction Enabled框。