2011-01-23 101 views
0

我有一个scrollView我想在捏手势结束时做一个动作。在滚动检测一个PinchGesture结束

SampleController.h

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

SampleController.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的滚动或缩放结束?

感谢,

布鲁诺

回答

0

我已经找到了解决办法:

我有我的控制器上的定时器,进行动作,如果滚动或dragg happend:

- (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; 
}