1

スクロール可能なビューがあり、メイン ビューをスクロールせずに起動するジェスチャ認識エンジンが必要です。

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

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 5 でしか動作しないようです。iOS 4 で同じ認識機能を使用するにはどうすればよいですか?

4

2 に答える 2

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;
}  
于 2012-01-11T09:51:47.487 に答える
0

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

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
于 2012-06-25T18:36:05.233 に答える