暂时禁用手势识别器滑动功能

时间:2016-08-29 13:42:12

标签: ios uiview uigesturerecognizer

我有一个带有多重按钮和图像的uiview。我把那张卡片拖得像是一个火种界面。

我希望能够阻止用户在某些位置拖动卡片并允许其他人使用。

我尝试禁用它,但我这样做的方式禁用了所有用户与整个视图的交互,停止了滑动,但也阻止用户点击我不想做的按钮(我只想阻止他们滑动)。

这是我启动滑动的方式:

let gestureBack = UIPanGestureRecognizer(target: self, action: Selector("wasDraggedBack:"))
backview.addGestureRecognizer(gestureBack)

这是我错误地尝试停止滑动的方式:

  self.backview.userInteractionEnabled = true

如何在不影响视图内部所有其他按钮的情况下停止视图滑动。

由于

3 个答案:

答案 0 :(得分:3)

是的,对于UIGestureRecognizer有一个委托方法,您可以设置如下的委托方法

let gestureBack = UIPanGestureRecognizer(target: self, action: Selector("wasDraggedBack:"))
backview.addGestureRecognizer(gestureBack)
//set the delegate
 gestureBack.delegate? = self

并确认委托,

class ViewController: UIViewController,UIGestureRecognizerDelegate {

}

最后使用此委托方法触发操作

func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
    //condition to recognise the gesture 
    return true; //or false
}

答案 1 :(得分:2)

根据文档,所有UIGestureRecognizer类对象都具有enabled属性。

它的作用是:

  

禁用手势识别器,使其无法接收触摸。默认值是true。如果在手势识别器当前正在识别手势时将此属性更改为false,则手势识别器将转换为已取消状态。

答案 2 :(得分:1)

你可以做点什么,

 gestureBack.enabled = false