2015-09-30 4 views
3

У меня есть проект в xcode 7 (swift), который я хочу загрузить с помощью differents viewcontrollers, разработанного в раскадровке, с помощью функции проведите по экрану вправо и влево и перейдите к следующему диспетчеру просмотра или назад. Теперь у меня есть это, но только исчезают справа налево, и я хочу, чтобы оба исчезали.Я хочу прокрутить вправо и влево в swift

func respondToSwipeGesture(sender: UISwipeGestureRecognizer) { 

    switch sender.direction { 
    case UISwipeGestureRecognizerDirection.Right: 
     print("SWIPED DERECHA") 
     self.performSegueWithIdentifier("cambio2", sender: nil) 
    case UISwipeGestureRecognizerDirection.Left: 
     print("SWIPED IZQUIERDA") 
     self.performSegueWithIdentifier("cambio", sender: nil) 
    default: 
     break 
    } 
} 

ответ

7

Вы также можете использовать UISwipeGestureRecognizer, создав 2 экземпляра его. один для каждого направления.

var swipeLeft : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "swipe:") 
    swipeLeft.direction = UISwipeGestureRecognizerDirection.Left 

    var swipeRight : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "swipe:") 
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right 

    self.view.addGestureRecognizer(swipeLeft) 
    self.view.addGestureRecognizer(swipeRight) 

и функция красть

func swipe(sender: UISwipeGestureRecognizer) { 

    switch sender.direction { 
    case UISwipeGestureRecognizerDirection.Right: 
     print("SWIPED DERECHA") 
     self.performSegueWithIdentifier("first", sender: nil) 
    case UISwipeGestureRecognizerDirection.Left: 
     print("SWIPED IZQUIERDA") 
     self.performSegueWithIdentifier("second", sender: nil) 
    default: 
     break 
    } 
} 
+0

Спасибо за ответы после школы, я попробую, я хочу создать эффект, который исчезает справа и исчезает влево, когда я прокручиваю один из направлений. Думаю, что нужно попробовать navigstioncontroller с анимацией. – adrianmanuel

+0

Для Swift3: измените «UISwipeGestureRecognizerDirection.Left "в" UISwipeGestureRecognizerDirection.left "и" swipeRight.direction = U ISwipeGestureRecognizerDirection.Right "в" swipeRight.direction = UISwipeGestureRecognizerDirection.right "в регистрации, а также в функции swipe(). Также измените «self.performSegueWithIdentifier (« first », sender: nil)« to »self.performSegue (withIdentifier:« first », sender: nil)» и «self.performSegueWithIdentifier» («second», sender: no) «to» self.performSegue (withIdentifier: «second», отправитель: nil) ». – akr

0

UISwipeGestureRecognizer должен только имеет одно направление разрешено, вы должны использовать UIPanGestureRecognizer.

let swipe = UIPanGestureRecognizer(target: self, action: "respondToSwipeGesture:") 
     self.view.addGestureRecognizer(swipe); 


func respondToSwipeGesture(sender: UIPanGestureRecognizer) { 
     let point = sender.velocityInView(self.view) 
     //left or right 
     if point.x > 0 { 
      self.performSegueWithIdentifier("segue1", sender: nil) 
     }else{ 
      self.performSegueWithIdentifier("segue2", sender: nil) 
     } 

Конечно оба контроллера должны быть в UINavigationController

Для раскадровке настройки: enter image description here

+0

я преуспел с uigesture распознавателем, но переходом между ViewController работать только в одном направлении, я хочу, чтобы создать типичный журнал внутри приложения, как мнения PDF в интерактивных книгах – adrianmanuel

2

Вы собираетесь об этом все неправильно. Вам нужно изучить интерактивные пользовательские переходы. Так, например, если вы хотите прокручивать влево и вправо, чтобы означать push и pop в навигационном контроллере, затем выполните делегат навигационного контроллера navigationController:animationControllerForOperation:fromViewController:toViewController: и navigationController:interactionControllerForAnimationController: и идите оттуда.

Смежные вопросы