以编程方式在Swift中启动手势识别器?

时间:2016-05-17 14:47:14

标签: ios swift uikit uipangesturerecognizer

我正在尝试确定是否有一种以编程方式设置手势识别器状态的方法,强制它在实际检测用户输入之前开始。

例如,我在检测到长按时向图像添加平移手势识别器,就像这样;

let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
myImage.addGestureRecognizer(longPressRecognizer)

func longPressed(sender: UILongPressGestureRecognizer) {

   let mainWidth = UIScreen.mainScreen().bounds.width
   let mainHeight = UIScreen.mainScreen().bounds.height

   let myView: UIView(frame: CGRect(x: 0, y: 0, width: mainWidth, height: mainHeight)

   let gestureRecognizer = UIPanGestureRecognizer(target: self, action: "handlePan:")
   myView.addGestureRecognizer(gestureRecognizer)

   self.view.addSubview(myView)

}

handlePan()功能中,我可以确定平底锅的开始和结束时间;

func handlePan(gesture: UIPanGestureRecognizer) {

    if gesture!.state == UIGestureRecognizerState.Began {
        print("Started pan")
    }

    if gesture!.state == UIGestureRecognizerState.Ended {
        print("Ended pan")
    }

}

我的问题是,为了检测手势何时开始,用户必须(1)长按图像,(2)松开手指,(3)按住并开始平移。理想情况下,我希望用户(1)长按图像,(2)开始平移。

为了实现这一目标,我想象我需要找到一种方法来欺骗"事情已经开始相信平底锅的姿态已经开始了。

note :实际上,比这里提供的内容更复杂,这就是为什么我需要使用平移手势添加子视图,而不是仅仅添加平移手势图像直接。

1 个答案:

答案 0 :(得分:1)

您要做的是先添加手势识别,将他们的代表设置为您的班级,允许他们同时识别(使用以下方法),并且只有在长按成功后才使用来自平底锅的数据识别。

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
    shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}