2016-04-09 5 views
0
override func viewDidAppear(animated: Bool) { 

    view.userInteractionEnabled = true 
    let pinchGesture:UIPinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: "pinchGesture") 
    view.addGestureRecognizer(pinchGesture) 

    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
    view.addGestureRecognizer(tap) 
} 

func dismissKeyboard() { 
    view.endEditing(true) 
} 

func pinchGesture(){ 

    self.performSegueWithIdentifier("trick1Segue", sender: self) 

} 

В моем приложении iOS я хочу перейти на другой контроллер представления, когда на экране выполняется жест щепотки. Водопроводная жест, чтобы закрыть клавиатуру при постукивании за пределами области клавиатурыПопытка представить <**> по адресу <**> во время презентации. Выполняя segue от одного контроллера представления к другому с помощью swift

Во время работы приложения, я получаю сообщение об ошибке:

«Попытка представить < **> на < **> в то время презентации «

Новый контроллер просмотра появляется, но открывается дважды, с очень небольшой разницей в времени. Посмотрел много блогов, но не смог найти решение, пожалуйста, помогите !!!

ответ

0

Проблема в том, что pinchGesture можно назвать несколько раз. Вы должны добавить свойство к вашему ViewController, чтобы следить за тем, что вы уже действовали на пинч жест:

var segueInProcess = false 

func pinchGesture() { 
    if !segueInProcess { 
     self.performSegueWithIdentifier("trick1Segue", sender: self) 
     segueInProcess = true 
    } 
} 
+0

Большое вам спасибо, я долгое время боролся с этой проблемой. Решено! – user3655266

0

Жест распознования называются несколько раз с различными состояниями. Что вы можете сделать, это проверить свойство stateUIPinchGestureRecognizer в pinchGesture().