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

Nic*_*uir 3 uiview uigesturerecognizer ios

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

我希望能够在某些点阻止用户拖动卡片,而在其他点允许他们拖动卡片。

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

这就是我发起滑动的方式:

let gestureBack = UIPanGestureRecognizer(target: self, action: Selector("wasDraggedBack:"))
backview.addGestureRecognizer(gestureBack)
Run Code Online (Sandbox Code Playgroud)

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

  self.backview.userInteractionEnabled = true
Run Code Online (Sandbox Code Playgroud)

我怎样才能阻止视图滑动而不影响视图内的所有其他按钮等。

谢谢

Sha*_* BS 5

是的,为此有一个委托方法,您UIGestureRecognizer可以像下面这样设置委托方法

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

并确认委派喜欢,

class ViewController: UIViewController,UIGestureRecognizerDelegate {

}
Run Code Online (Sandbox Code Playgroud)

最后使用这个委托方法来触发动作,

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


bev*_*voy 4

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

它的作用是:

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