2

我遇到了 UISwipeGestureRecognizer 的问题,它适用于 UIPageViewController 项目的第一页,但不适用于以下所有项目。

该配置基于 Apple 的 PageViewController 示例代码。有问题的 UISwipeGestureRecognizer 已添加到情节提要中,并且 UITapGestureRecognizer 在每个页面上都可以正常工作。

我检查了视图控制器上的目标、选择器、视图是否正确,但找不到任何异常。

是否有人注意到类似的行为并找到了解决方案。

我应该说我尝试以编程方式添加滑动手势识别器,结果相同。

4

1 回答 1

3

我遇到了同样的问题,并找到了两种解决方法。

1.这种方式可以同时识别平移和滑动,这可能是您想要的。这不是我想要的,因为我不希望页面在我向上/向下滑动时改变。对于此方法,您必须使您的类成为滑动手势识别器的代表。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

2.这种方式可以防止平移直到它知道滑动失败,这意味着滑动永远不会与平移同时发生。我相信,如果您的滑动是垂直的,这只会对您有用,因为水平的滑动总是会阻止平移。

//Cheat to get the pan gesture from the pageviewcontroller. You should iterate and make sure you get the right one.
UIPanGestureRecognizer * panGR = self.pageViewController.gestureRecognizers[0];     

// Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily.
UISwipeGestureRecognizer * swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(openArchive:)];
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionDown;
[panGR requireGestureRecognizerToFail:swipeGestureRec];
[self.view addGestureRecognizer:swipeGestureRec];
swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(closeArchive:)];
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionUp;
[panGR requireGestureRecognizerToFail:swipeGestureRec];
[self.view addGestureRecognizer:swipeGestureRec];
于 2013-02-10T07:32:52.440 回答