触发扫视手势取消IBAction

时间:2015-08-07 16:52:16

标签: ios swift uigesturerecognizer uiswipegesturerecognizer

我在视图控制器中有一个滑动手势,可以正常工作并向输出报告。像这样简单:

 @IBAction func leftSwipe(sender: UISwipeGestureRecognizer) {
    println("ok") 
}

然后我拿了相同的手势识别器并附加了一个segue,这会导致它在检测到滑动时以模态方式切换视图控制器。我通过简单的控制点击在故事板中完成了所有操作,将手势识别器拖动到我想要更改的视图控制器,然后选择其中一个segue动画选项。它按预期工作,当我将视图控制器更改为另一个时,但是... IBAction完全停止工作,我甚至使用断点,它从未在那里打破。是否触发了segues正常取消其他发送的操作?我总是可以添加另一个手势识别器,但这种行为是否正常?

小更新: 添加新的手势识别器工作,可以通过IBAction识别,但现在前一个手势不起作用,视图控制器也不会改变。

解: 感谢Firas指出我正确的方向,我发现apple [{3}}解释了方法prepareForSegue 我在发送segue的视图控制器中实现了这个方法:

 override func  prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "yourSegueID" {
        println("segue happened, so the gesture did too!")
    }
}

也许将segue与这样的手势联系起来可能存在问题,但对于我的实现,我真的看不到任何可能发生的事情。

1 个答案:

答案 0 :(得分:0)

你可以做的是从viewController而不是gestureRecognizer获取segue并给该segue一个标识符,例如segueIdentifier,然后在你的行动电话self.performeSegueWithIdentifier...上或做其他事。

每当您直接从视图或手势识别器创建segue时,该视图/ gestureRecognizer上的操作都不会执行