在演示过程中尝试在 <**> 上演示 <**>。使用 swift 从一个视图控制器执行到另一个视图控制器的 segue 时

Attempting to present <**> on <**> while a presentation is in progress. While performing a segue from one view controller to another using swift

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 应用中,我想在屏幕上执行捏合手势时转换到不同的视图控制器。 点击手势是在键盘区域外点击时关闭键盘

当 运行 应用程序时,我收到一条错误消息:

"Attempting to present < ** > on < ** > while a presentation is in progress"

新的view controller出现了但是打开了两次,时间差很短。查了很多博客都没找到解决办法,求助!!!

问题是pinchGesture可以调用多次。您应该在 viewController 中添加 属性 以跟踪您已经对捏合手势采取行动的事实:

var segueInProcess = false

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

手势识别器被多次调用,状态不同。您可以做的是检查 pinchGesture()UIPinchGestureRecognizerstate 属性。