取消 IBAction 的滑动手势触发 Segue
Triggered Segue of Swipe Gesture Canceling IBAction
我在视图控制器中有一个滑动手势,工作正常并向输出报告。像这样简单的东西:
@IBAction func leftSwipe(sender: UISwipeGestureRecognizer) {
println("ok")
}
但后来我采用了相同的手势识别器并为其附加了一个 segue,这将导致它在检测到滑动时模态切换视图控制器。我通过简单的控制点击在情节提要中完成了这一切,将手势识别器拖到我想要更改的视图控制器,然后 select 一个 segue 动画选项。它按预期工作,当我滑动视图控制器更改为另一个时,但是...... IBAction 完全停止工作,我什至使用了一个断点并且它永远不会在那里中断。触发的 segues 是否正常取消其他发送的动作?我总是可以添加另一个手势识别器,但这种行为正常吗?
小更新:
添加一个新的手势识别器工作正常,它可以用 IBAction 识别,但现在以前的手势不起作用,视图控制器也没有改变。
解决方案:
感谢 Firas 为我指明了正确的方向,我找到了 apple here 解释的方法 prepareForSegue
我在发送 segue 的视图控制器中实现了这样的方法:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "yourSegueID" {
println("segue happened, so the gesture did too!")
}
}
也许将 segue 与这样的手势相关联可能会出现问题,但对于我的实现,我真的看不到任何可能发生的事情。
你可以做的是从 viewController
而不是 gestureRecognizer
中获取 segue,然后给那个 segue 一个标识符,比如 segueIdentifier
,然后在你的操作调用 self.performeSegueWithIdentifier...
或做其他事情。
每当您直接从视图或手势识别器创建一个 segue 时,view/gestureRecognizer 上的操作将不会执行
我在视图控制器中有一个滑动手势,工作正常并向输出报告。像这样简单的东西:
@IBAction func leftSwipe(sender: UISwipeGestureRecognizer) {
println("ok")
}
但后来我采用了相同的手势识别器并为其附加了一个 segue,这将导致它在检测到滑动时模态切换视图控制器。我通过简单的控制点击在情节提要中完成了这一切,将手势识别器拖到我想要更改的视图控制器,然后 select 一个 segue 动画选项。它按预期工作,当我滑动视图控制器更改为另一个时,但是...... IBAction 完全停止工作,我什至使用了一个断点并且它永远不会在那里中断。触发的 segues 是否正常取消其他发送的动作?我总是可以添加另一个手势识别器,但这种行为正常吗?
小更新: 添加一个新的手势识别器工作正常,它可以用 IBAction 识别,但现在以前的手势不起作用,视图控制器也没有改变。
解决方案: 感谢 Firas 为我指明了正确的方向,我找到了 apple here 解释的方法 prepareForSegue 我在发送 segue 的视图控制器中实现了这样的方法:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "yourSegueID" {
println("segue happened, so the gesture did too!")
}
}
也许将 segue 与这样的手势相关联可能会出现问题,但对于我的实现,我真的看不到任何可能发生的事情。
你可以做的是从 viewController
而不是 gestureRecognizer
中获取 segue,然后给那个 segue 一个标识符,比如 segueIdentifier
,然后在你的操作调用 self.performeSegueWithIdentifier...
或做其他事情。
每当您直接从视图或手势识别器创建一个 segue 时,view/gestureRecognizer 上的操作将不会执行