0

我有一个滚动视图,我想在捏合手势结束时对其执行操作。

样品控制器.h

@interface SampleController : UIViewController <UIPopoverControllerDelegate,UITableViewDelegate>{
    IBOutlet UIScrollView *mapScrollView;
}
@property (nonatomic, retain) IBOutlet UIScrollView *mapScrollView;
@end

样品控制器.m

@implementation SampleController

@synthesize mapScrollView;

- (void)viewDidLoad {
    [super viewDidLoad];

UIPinchGestureRecognizer *pinchRecognizer = 
    [[UIPinchGestureRecognizer alloc] 
     initWithTarget:self 
     action:@selector(handlePinchFrom:)];
    [mapScrollView addGestureRecognizer:pinchRecognizer];
    [pinchRecognizer release];
}

- (void)handlePinchFrom:(UIPinchGestureRecognizer *)recognizer {
    if(recognizer.state == UIGestureRecognizerStateEnded)
       {
           NSLog(@"handleTapEND");
       }
    else
    {
        NSLog(@"zooming ...");
    }
}

- (void)dealloc {
    [mapScrollView release];
    [super dealloc];
}

@end

我的问题是:

当我使用 pinchRecognizer时,它会阻止 mapScrollView 的滚动

是否有其他方法可以检测 ScrollView 上滚动或缩放的结束?

谢谢,

布鲁诺

4

1 回答 1

0

我找到了一个解决方案:

我的控制器上有一个计时器,如果发生滚动或拖动,它会继续执行操作:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.mapTimer = [[NSTimer 
                            scheduledTimerWithTimeInterval:1.0f 
                            target:self 
                            selector:@selector(updateDisplay:) 
                            userInfo:nil 
                            repeats:YES] retain];
}

- (void)updateDisplay:(NSTimer*)theTimer {

    if(mapHasMoved)
    {
        NSLog(@"updateDisplay");
        [self updateProducts];
        mapHasMoved = FALSE;
    }
}

- (void)endZoomingOrScrollingHandler{

    mapHasMoved = TRUE;
}
于 2011-01-23T16:01:50.313 回答