iPhone模拟器向右滑动可以,但向左滑动不行?

14

我正在尝试在UIScrollView上使用左右滑动功能,但是在iPhone模拟器中似乎只有向右滑动可以正常工作,而向左滑动没有反应。我有任何步骤遗漏了吗?

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
self.scrollView.multipleTouchEnabled = YES; UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; swipe.delaysTouchesBegan = YES; swipe.numberOfTouchesRequired = 2; [self.scrollView addGestureRecognizer:swipe]; [swipe release]; }
- (void)handleSwipe:(UISwipeGestureRecognizer *)recognizer { if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
} else if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) {
} }
3个回答

19

请使用以下代码:

UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)];
rightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[rightRecognizer setNumberOfTouchesRequired:1];
[mainSlideShowImageScrollView addGestureRecognizer:rightRecognizer];
[rightRecognizer release];
UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipeHandle:)];
leftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[leftRecognizer setNumberOfTouchesRequired:1];
[mainSlideShowImageScrollView addGestureRecognizer:leftRecognizer];
[leftRecognizer release];   



- (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer 
   {
      //Do moving
   }

- (void)leftSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer 
{
  // do moving
}

你的意思是创建两个UISwipeGestureRecognizers,一个使用rightSwipeHandle:选择器,另一个使用leftSwipeHandle:选择器?我是否仍然需要在这两个处理程序中检查识别器的方向? - Guoliang Cao
是的,我就是这个意思。你不需要为任何其他事情烦恼,只需在左滑或右滑时执行你想要做的操作即可。但是,请不要忽略最初编写的代码,因为它将手势识别器绑定到特定容器上。 - rptwsthi
刚刚注意到我可以在viewWillAppear中设置UISwipeGestureRecognizer.direction。将方向设置为UISwipeGestureRecognizerDirectionLeft后,向左滑动就可以工作了。现在我明白你的意思了。非常感谢。 - Guoliang Cao

4

您的“handleSwipe”代码实际上是正确的。您需要两个UISwipeGestureRecognizers,但可以将它们都指向同一个处理程序,其中包含您的“IF”语句。


0

您可以创建一个手势识别器,它可以处理左右滑动(甚至所有方向):

    UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
        swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight;

所有指令:

  swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接