Rilevare un END PinchGesture su uno ScrollView
-
23-10-2019 - |
Domanda
Ho uno ScrollView su cui voglio fare un'azione quando il gesto pizzico è finita.
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
Il mio problema è il seguente:
Quando ho avuto l'pinchRecognizer blocca lo scorrimento di mapScrollView.
C'è un altro modo per rilevare la fine di uno scrolling o lo zoom su una ScrollView?
Grazie,
Bruno
Soluzione
ho trovato una soluzione:
Ho avuto un timer sul mio controller, che procede l'azione se un rotolo o un happend dragg:
- (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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow