如何从捏(或其他连续)手势执行segue?

时间:2015-04-13 17:54:44

标签: ios swift

道歉,如果这真的很明显,我错过了什么......

我有一个包含UIImageView的View Controller。当有人捏出来时,我想转到另一个视图,即他们之前所有图像的索引(这称为展开segue?)。

对于离散手势(点按,滑动..),我可以转到故事板,拖动手势,然后按住Ctrl键拖动以创建一个segue。

如何对连续手势做同样的事情?以某种方式编程?

2 个答案:

答案 0 :(得分:2)

使用GestureRecognizers时,您可以为其分配目标。就像在这个PinchGestureRecognizer中一样:

let pinch = UIPinchGestureRecognizer(target: self, action: "handlePinch:")

handlePinch() {}内你可以像这样执行segue :(在故事板中创建segue之后)

performSegueWithIdentifier("mySegueID", sender: nil)

希望有所帮助:)

答案 1 :(得分:2)

<强> 1。展开赛段

在回答您的第一个问题时,是的,您可以使用展开segue。展开segue是一个正常的segue,除了它用于通过push,modal或popover segues向后移动。它甚至可以用于一次性移回多次推送,模态演示或弹出窗口。

这是一个很好的教程:http://spin.atomicobject.com/2014/10/25/ios-unwind-segues/

<强> 2。 UIPinchGestureRecogniser

您可以使用scale上的UIPinchGestureRecognizer属性来确定何时执行展开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
        }
    }
}