2011-07-05 24 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:?これらの2つのハンドラーの中で認識装置の方向を確認する必要がありますか? –

+0

はい、私はそういう意味でした。そして、あなたが何をしたいのか、ちょうど左か右のスワイプで何かを気にする必要はありません。しかし、最初に書かれたコードは見逃せません。特定のコンテナへの認識を促すためです。 – rptwsthi

+0

私はviewWillAppearでUISwipeGestureRecognizer.directionを設定できることに気付きました。 UISwipeGestureRecognizerDirectionLeftに方向を設定した後、左の作品をスワイプします。今私はあなたが意味することを理解しています。どうもありがとうございました。 –

4

あなたの 'handleSwipe' コードは実際には正しいです。あなたは2つのUISwipeGestureRecognizerが必要ですが、あなたは 'IF'ステートメントを含む同じハンドラを指すことができます。

0

あなたは、左右スワイプ両方のハンドル1つのジェスチャ認識装置を作成することができます(あるいはすべてdirections-を!):

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

すべての方向:

swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown; 
関連する問題