我在viewDidLoad中添加了几个滑动手势识别器,但未调用指定的选择器:
UISwipeGestureRecognizer *swipeGestureRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightSwipe:)];
swipeGestureRight.numberOfTouchesRequired = 1;
swipeGestureRight.direction = (UISwipeGestureRecognizerDirectionRight);
[self.scrollView addGestureRecognizer:swipeGestureRight];
UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleLeftSwipe:)];
swipeGestureLeft.numberOfTouchesRequired = 1;
swipeGestureLeft.direction = (UISwipeGestureRecognizerDirectionLeft);
[self.scrollView addGestureRecognizer:swipeGestureLeft];
如果我将选择器更改为@selector(crashAtRunTimeWithUndefinedMethod :),则没有任何反应。 视图控制器继承自UIGestureRecognizerDelegate。在上面的代码中没有设置手势识别器的代理,但添加它并将其设置为自己并没有任何区别。
scrollView是控制器主视图的子视图,但我尝试将目标更改为主视图,这也没有区别。
答案 0 :(得分:1)
UIScrollView已经预先配置了手势识别器,可以检测滑动(以及其他手势,如平移)。记录保存手势识别UIScrollView的数组,您将看到它们。
并不是你不能为UIScrollView添加额外的手势识别器,但你必须要小心。在我自己的应用程序中,我向UIScrollView添加了一个轻敲手势识别器,没有问题,因为它不会与任何预先配置的手势识别器竞争。