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框。