2011-07-05 55 views
14

我想在UIScrollView上左右滑動。但是,即使向右滑動,它看起來像向左滑動也不能在iPhone模擬器中工作。我錯過了任何一步?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) { 

    } 
} 

回答

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 
} 
+0

你的意思是創建2個UISwipeGestureRecognizers,一個用選擇rightSwipeHandle :,另一個用leftSwipeHandle:?我是否還需要檢查這兩個處理程序中的識別器方向? –

+0

是的,我的意思是這樣。而且您無需爲其他任何事情而煩惱,只需按左或右滑動即可執行您想要執行的操作。但是,不要錯過最初編寫的代碼,因爲它會將識別器指向特定的容器。 – rptwsthi

+0

只要注意到我可以在viewWillAppear中設置UISwipeGestureRecognizer.direction。在將方向設置爲UISwipeGestureRecognizerDirectionLeft後,向左滑動即可。現在我明白你的意思了。非常感謝你。 –

4

你 'handleSwipe' 的代碼實際上是正確的。您需要兩個UISwipeGestureRecognizers,但您可以將它們指向同一個處理程序,包含您的'IF'語句。

0

您可以創建一個手勢識別,處理左,右輕掃(甚至所有指示─!):

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

所有方向:

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