2012-01-10 8 views
1

私はスクロール可能なビューを持っており、メインビューをスクロールすることなく起動するジェスチャ認識機能が必要です。UIScrollView、PanGestureRecognizer、およびiOS 4

私はこのコードを使用しました:

UISwipeGestureRecognizer *upRecognizer = 
    [[UISwipeGestureRecognizer alloc] initWithTarget:self 
               action:@selector(upSwipeHandle:)]; 
upRecognizer.direction = UISwipeGestureRecognizerDirectionUp; 
[upRecognizer setNumberOfTouchesRequired:2]; 
[controller.view addGestureRecognizer:upRecognizer]; 
[[controller.scrollView panGestureRecognizer] 
    requireGestureRecognizerToFail:upRecognizer]; 

をしかし、私がiOSの4で同じ認識装置を使用するにはどうすればよいだけのiOS 5で動作するようですか?

+0

問題解決済み... –

答えて

2

私はUIGestureRecognizerデリゲートメソッドを使用して私の問題を解決します。

はちょうど

upRecognizer.delegate = self; 

を追加し、この方法:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 

    if ([gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { 
     return YES; 
    } 

    return NO; 
} 
0

は、私は同じ問題に遭遇しました。 scrollView.panGestureRecognizerはiOS 5.0以降でしか使用できないため、4.3シミュレータで同様のコードを実行しましたが、コードが失敗しました。

UIScrollViewにカテゴリを追加して解決しました。

@interface UIScrollView(panGestureRecognizer) 
@end 
@implementation UIScrollView(panGestureRecognizer) 
// iOS5 has a panGestureRecognizer property 
// Add a getter for iOS 4.3+ 
- (UIPanGestureRecognizer *)panGestureRecognizer 
{ 
    for (UIGestureRecognizer *gestureRecognizer in self.gestureRecognizers) 
    { 
     if ([gestureRecognizer isKindOfClass: [UIPanGestureRecognizer class]]) { 
      return (UIPanGestureRecognizer *)gestureRecognizer; 
     } 
    } 
    return nil; 
} 
@end 
関連する問題