Wednesday, 5 September 2012

Swipe a view like off some and push or pop in iPhone with pan gesture.

UIPanGestureRecognizer *panGesture = nil;
    panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panViewWithGestureRecognizer:)];
   
    [panGesture setMaximumNumberOfTouches:2];
    [panGesture setDelegate:self];
   
    [adminView addGestureRecognizer:panGesture];
    [panGesture release];
- (void)panViewWithGestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer
{   
   
    CGPoint velocity = [gestureRecognizer velocityInView:adminView];
   
    if(velocity.x > 0)
    {
        NSLog(@"gesture went right");
        if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged){
            if (adminView.frame.origin.x <= -10) {
                CGPoint translation = [gestureRecognizer translationInView:[adminView superview]];
                [adminView setCenter:CGPointMake([adminView center].x + translation.x, [adminView center].y)];
                [gestureRecognizer setTranslation:CGPointZero inView:[adminView superview]];
            }
        }
        else{
            if (adminView.frame.origin.x > -100) {
                [UIView beginAnimations:nil context:NULL];
                [UIView setAnimationDuration:0.5f];
                [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:adminView cache:YES];
                adminView.frame=CGRectMake(0, 0, 322, 748);
                [UIView commitAnimations];
            }
            else{
                [UIView beginAnimations:nil context:NULL];
                [UIView setAnimationDuration:0.5];
                [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:adminView cache:YES];
                adminView.frame=CGRectMake(-295, 0, 322, 748);
                [UIView commitAnimations];
            }
        }
    }
    else
    {
        NSLog(@"gesture went left");
        if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged){
            if (adminView.frame.origin.x > -200) {
                CGPoint translation = [gestureRecognizer translationInView:[adminView superview]];
                [adminView setCenter:CGPointMake([adminView center].x + translation.x, [adminView center].y)];
                [gestureRecognizer setTranslation:CGPointZero inView:[adminView superview]];
            }
        }
        else{
            if (adminView.frame.origin.x > -250) {
                [UIView beginAnimations:nil context:NULL];
                [UIView setAnimationDuration:0.5f];
                [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:adminView cache:YES];
                adminView.frame=CGRectMake(-295, 0, 322, 748);
                [UIView commitAnimations];
            }
            else{
                [UIView beginAnimations:nil context:NULL];
                [UIView setAnimationDuration:0.5];
                [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:adminView cache:YES];
                adminView.frame=CGRectMake(0, 0, 322, 748);
                [UIView commitAnimations];
            }
        }
    }
}

No comments:

Post a Comment