2012-09-03 9 views
2

在我的應用程序中,我需要有一個滑動手勢識別器在我的背景滾動上方向。這是我下面iphone開發:手勢識別滾動同時啓用

它是在viewDidLoad中

UISwipeGestureRecognizer *Swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)]; 
Swipe.direction = UISwipeGestureRecognizerDirectionUp; 
[backgroundScroller addGestureRecognizer:Swipe]; 

代碼,它是SwipeRecognizer:

- (void) SwipeRecognizer:(UISwipeGestureRecognizer *)sender { 
    if (sender.direction | UISwipeGestureRecognizerDirectionUp){ 
     NSLog(@" *** SWIPE UP ***"); 
    } 
} 

的問題是我不能啓用滾動功能,同時捕捉手勢。當我說滾動沒有啓用時,我可以識別手勢。但我需要同時滾動和手勢識別。這不可能嗎?

回答

2

重寫gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:方法不阻斷UIScrollViews潘識別

,它會工作...

不要忘記委託添加到自手勢識別器。正如@ death7eater的評論所述。

+0

感謝您的答案,但它沒有奏效。仍然當我設置滾動被啓用時,我無法識別手勢 – death7eater

+2

以及我使用它並添加了'Swipe.delegate = self;'它工作。謝謝:) – death7eater

+0

當然這是必要的,否則該方法將不會被調用;) – lukaswelte

1

我解決我的問題一樣,:

這是viewDidLoad中:

UISwipeGestureRecognizer *Swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(SwipeRecognizer:)]; 
    Swipe.direction = UISwipeGestureRecognizerDirectionUp; 
    [backgroundScroller addGestureRecognizer:Swipe]; 
    Swipe.delegate = self; 

這是SwipeRecognizer方法:

- (void) SwipeRecognizer:(UISwipeGestureRecognizer *)sender { 
    if (sender.direction | UISwipeGestureRecognizerDirectionUp){ 
     NSLog(@" *** SWIPE UP ***"); 
    } 
} 

並感謝@lukaswelte這允許執行多個手勢同時進行:

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