ios - 2 various UIPanGestureRecognizers with different directions simultaneously? -
it possible pan up, down, left , right.
recognizer 1 handles vertical pans only, recognizer 2 handles horizontal pans only. both of them linked same 1 delegate object.
recognizer 2 independent first 1 (except of 1 direction described 4 ones may chosen).
so how prevent 1 of them being executed simultaneously one?
-(void)initpangestures{ uipangesturerecognizer *pangesturerecognizer1 = [[uipangesturerecognizer alloc] initwithtarget:self action:@selector(handlepan1gesture:)]; uipangesturerecognizer *pangesturerecognizer2 = [[uipangesturerecognizer alloc] initwithtarget:self action:@selector(handlepan2gesture:)] } -(void)handlepan1gesture:(uipangesturerecognizer *)sender{ cgpoint velocity = [sender velocityinview:sender.view]; switch(sender.state) { case uigesturerecognizerstatebegan: if(fabs(velocity.y) > fabs(velocity.x)){ pangesturerecognizer2.enabled=yes; pangesturerecognizer1.enabled=no; } break; case uigesturerecognizerstatecancelled: pangesturerecognizer1.enabled=yes; break; case uigesturerecognizerstateended:{ pangesturerecognizer1.enabled=yes; } break; } if(velocity.x > 0) { nslog(@"gesture went right"); } else if(velocity.x < 0) { nslog(@"gesture went left"); } } -(void)handlepan2gesture:(uipangesturerecognizer *)sender{ cgpoint velocity = [sender velocityinview:sender.view]; switch(sender.state) { case uigesturerecognizerstatebegan: if(fabs( velocity.x) > fabs(velocity.y)){ pangesturerecognizer2.enabled=no; pangesturerecognizer1.enabled=yes; } break; case uigesturerecognizerstatecancelled: pangesturerecognizer2.enabled=yes; break; case uigesturerecognizerstateended: pangesturerecognizer2.enabled=yes; break; } if(velocity.y > 0) { nslog(@"gesture went down"); } else if(velocity.y < 0) { nslog(@"gesture went up"); } } also 2 diff gesture have implement delegate methods , recognise gestures.fro example have used 2 gesture simultaneously long , pan gesture
#pragma mark - uigesturerecognizerdelegate methods - (bool)gesturerecognizershouldbegin:(uigesturerecognizer *)gesturerecognizer { return yes; } - (bool)gesturerecognizer:(uigesturerecognizer *)gesturerecognizer shouldrecognizesimultaneouslywithgesturerecognizer:(uigesturerecognizer *)othergesturerecognizer { if ([pangesturerecognizer1 isequal:gesturerecognizer]) { return [pangesturerecognizer2 isequal:othergesturerecognizer]; } if ([pangesturerecognizer2 isequal:gesturerecognizer]) { return [pangesturerecognizer1 isequal:othergesturerecognizer]; } return no; }
Comments
Post a Comment