Views Navigation Using Swipe Gesture

后端 未结 5 446
南旧
南旧 2020-12-07 13:47

How can I switch views vertically using swipe gestures ?

相关标签:
5条回答
  • 2020-12-07 13:52

    Implement this (didload)

    //........towards right Gesture recogniser for swiping.....//
    UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)];
    rightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
    [rightRecognizer setNumberOfTouchesRequired:1];
    [urView addGestureRecognizer:rightRecognizer];
    [rightRecognizer release];
    
    //........towards left Gesture recogniser for swiping.....//
    UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipeHandle:)];
    leftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
    [leftRecognizer setNumberOfTouchesRequired:1];
    [urView addGestureRecognizer:leftRecognizer];
    [leftRecognizer release];   
    

    Then This:

    - (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer 
    {
    //Do moving
    }
    
    - (void)leftSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer 
    {
    // do moving
    }
    
    0 讨论(0)
  • 2020-12-07 13:53

    Certainly! Just set your viewController to be the UIGestureRecognizerDelegate and declare UISwipeGestureRecognizer *swipeLeftRecognizer; (also retain and synthesize). Then, in the implementation, set up the recognizers with

        UIGestureRecognizer *recognizer;
        // RIGHT SWIPE
        recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self 
                                                               action:@selector(handleSwipeFrom:)];
        [self.view addGestureRecognizer:recognizer];
        [recognizer release];
        // LEFT SWIPE
        recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
        self.swipeLeftRecognizer = (UISwipeGestureRecognizer *)recognizer;
    swipeLeftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
        [self.view addGestureRecognizer:swipeLeftRecognizer];
    self.swipeLeftRecognizer = (UISwipeGestureRecognizer *)recognizer;
        [recognizer release];
    

    Then trigger the actions you want with the method

    - (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
        if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
            // load a different viewController
        } else {
            // load an even different viewController
        }
    }
    

    What you do here is specific to your app. You can switch the tabBar selection, jump through a navigationController, present a different view modally, or just do a simple slide in transition.

    0 讨论(0)
  • 2020-12-07 13:54

    Adding gestures in swift

    func addSwipes() {
        // Left Swipe
        let swipeLeft = UISwipeGestureRecognizer(target: self, action: "swipeLeft:")
        swipeLeft.direction = .Left
        self.view.addGestureRecognizer(swipeLeft)
    
        // Right Swipe
        let swipeRight = UISwipeGestureRecognizer(target: self, action: "swipeRight:")
        swipeRight.direction = .Right
        self.view.addGestureRecognizer(swipeRight)
    }
    
    func swipeLeft(gestureRecognizer: UISwipeGestureRecognizer) {
    }
    
    func swipeRight(gestureRecognizer: UISwipeGestureRecognizer) {
    
    }
    
    0 讨论(0)
  • 2020-12-07 13:55

    For reference PengOne, here is the code you referred to in your comment above. I saved it on my Mac because I thought it might be useful one day... :D

    // Manual navigation push animation
    UIImage* image = [UIImage imageNamed:@"CurrentView"];
    UIImageView* imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = self.view.bounds;
    [self.view addSubview:imageView];
    [imageView release];
    CATransition *transition = [CATransition animation];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromRight;
    [self.view.layer addAnimation:transition forKey:@"push-transition"];
    
    0 讨论(0)
  • 2020-12-07 14:17

    I found my answer. I am posting the code for your reference. Thanks :-)

    in viewDidLoad

      UISwipeGestureRecognizer *swipeGesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipedScreendown:)] autorelease];
      swipeGesture.numberOfTouchesRequired = 1;
      swipeGesture.direction = UISwipeGestureRecognizerDirectionDown;
      [m_pImageView addGestureRecognizer:swipeGesture];
    

    Now

    - (void)swipedScreendown:(UISwipeGestureRecognizer*) swipeGesture {
      m_pViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
      CATransition *transition = [CATransition animation];
      transition.duration = 0.75;
      transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
      transition.type = kCATransitionPush;
      transition.subtype = kCATransitionFromBottom;
      transition.delegate = self;
      [self.view.layer addAnimation:transition forKey:nil];
      [self.view addSubview:PadViewController.view];
    }
    

    If you need some more clarification please post here.

    0 讨论(0)
提交回复
热议问题