如果这很显然,而我又错过了什么,请原谅..
我有一个包含UIImageView的视图控制器。 当有人向外捏合时,我想要跳转到另一个视图,即他们之前查看的所有图像的索引(这称为反向segue吗?)。
对于离散手势(轻拍,滑动..),我可以进入Storyboard,在手势上拖动,然后控制-拖动以创建segue。
对于连续手势,我怎么做?是否需要编程实现?
let pinch = UIPinchGestureRecognizer(target: self, action: "handlePinch:")
在 handlePinch() {}
函数中,您可以像这样执行segue:(在storyboard中创建segue后)
performSegueWithIdentifier("mySegueID", sender: nil)
1. 反向 Segues
针对您的第一个问题,是的,您可以使用反向 segue。反向 segue 是普通 segue 的一种,它用于通过 push、modal 或 popover segue 返回。甚至可以一次通过多个 push、modal 或 popover 返回。
这里有一个很好的教程: http://spin.atomicobject.com/2014/10/25/ios-unwind-segues/
2. UIPinchGestureRecogniser
您可以使用您的 UIPinchGestureRecognizer
上的 scale
属性来确定何时执行您的反向 segue。例如:
class MyViewController: UIViewController {
// We need to keep track of whether we asked to perform the segue,
// otherwise the segue could be called multiple times because
// UIPinchGestureRecognizer can be called more than once.
var isPerformingSegue = false
override func viewDidLoad() {
super.viewDidLoad()
let pinchRecogniser = UIPinchGestureRecognizer(target: self, action: Selector("pinched:"))
self.view.addGestureRecognizer(pinchRecogniser)
}
override func viewDidAppear(animated: Bool) {
isPerformingSegue = false
}
func pinched(recogniser: UIPinchGestureRecognizer) {
if recogniser.scale <= 0.2 && !isPerformingSegue {
self.performSegueWithIdentifier("unwindSegue", sender: self)
isPerformingSegue = true
}
}
}