2011-07-05 10 views
14

Bir UIScrollView üzerinde tokatlamak sol ve sağ kullanmaya çalışıyorum. Ancak, tokatlamak, sağa kaydırma yapmasına rağmen, sol kaydırmanın iPhone simülatöründe çalışmadığı görülüyor. Herhangi bir adımı özledim mi? TakipiPhone simülatör doğru çalışmaları hızlıca kaydırın, ancak sola kaydırmayın değil mi?

 
- (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) { 

    } 
} 

cevap

19

Kullanım:

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

Sen 2 UISwipeGestureRecognizers, bir kez oluştururken demek selector rightSwipeHandle :, leftSwipeHandle ile diğeri:? Hala bu 2 işleyicinin içindeki tanıyıcı yönünü kontrol etmem gerekiyor mu? –

+0

Evet öyle demek istedim. Ve herhangi bir şey için, sadece ne yapmak istiyorsanız, sol veya sağ tokatlamak için uğraşmanıza gerek yok. Ama evet, başlangıçta yazan kodu kaçırmayın, çünkü belli bir konteynere tanıyıcıyı harekete geçiriyor. – rptwsthi

+0

Sadece, viewWillAppear'da UISwipeGestureRecognizer.direction ayarlayabildiğimi fark ettim. Yönü, UISwipeGestureRecognizerDirectionLeft öğesinin yönünü ayarladıktan sonra kaydırın. Şimdi ne demek istediğini anlıyorum. Çok teşekkür ederim. –

4

Sizin 'handleSwipe' kod aslında doğrudur. İki UISwipeGestureRecognizer'a ihtiyacınız var, ancak ikisini de 'IF' ifadenizi içeren aynı işleyiciye yönlendirebilirsiniz.

0

Sol ve sağ tokatlamak hem kolları bir jest tanıyıcı oluşturabilir (hatta tüm Yönlerinin!):

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

Tüm yönlere:

swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown; 
İlgili konular