我在 UIScrollView 中有一个 UIView,两者都是使用 IB 创建的。UIView 在 UIScrollView 内水平滚动。我想检测左右两指滑动。
借用我在 SmpleGestureRecognizers中找到的示例代码,我将以下代码放在 UIScrollView 的 ViewController 的 viewDidLoad 方法中......
UIGestureRecognizer *recognizer;
UISwipeGestureRecognizer *swipeRightRecognizer, *swipeLeftRecognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
swipeRightRecognizer = (UISwipeGestureRecognizer *)recognizer;
swipeRightRecognizer.numberOfTouchesRequired = 2;
[self.view addGestureRecognizer:swipeRightRecognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
swipeLeftRecognizer = (UISwipeGestureRecognizer *)recognizer;
swipeLeftRecognizer.numberOfTouchesRequired = 2;
swipeLeftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeLeftRecognizer];
[recognizer release];
我已经在 viewcontroller.h 中设置了。并具有以下委托方法...
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return YES;
}
我假设这是一个有效的 gestureRecognizer 委托方法,但我在文档中找不到任何对它的引用。
我没有收到任何错误,但是当我用 2 根手指滑动时没有任何反应。委托方法没有被调用,我的操作方法也没有。我尝试删除 numbeOfTouchesRequired 调用以查看它是否可以通过单指滑动来工作,但无济于事。
我是否将gestureRecognizers添加到正确的视图中?我尝试将它添加到 UIView、UIScrollView 以及 self.view.superView。
示例代码运行良好。在我的代码实现和示例代码之间我能看到的唯一区别是我使用 IB 创建视图而示例代码没有。我怀疑在滑动手势到达我的识别器之前,某些东西正在消耗它。
我究竟做错了什么。
谢谢,
约翰