2016-08-29 99 views
1

我有一個uiview multipe按鈕和圖像。我拖動那張卡就像一個tinder界面。暫時禁用手勢識別器滑動功能

我希望能夠阻止用戶在某些點拖動卡,並允許他人在其他地方。

我試過禁用它,但我這樣做的方式禁用了與整個視圖的所有用戶交互停止滑動,但也阻止用戶按下我不想做的按鈕(我只想阻止他們滑動) 。

這是我如何啓動刷卡:

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

這是怎麼了我錯誤的嘗試停止刷卡:

self.backview.userInteractionEnabled = true 

如何我剛剛從又不影響所有刷卡停止視圖視圖內的其他按鈕等。

感謝

+0

首先嚐試gestureBAck.enabled = NO,如果它不工作,那麼你需要設置你的wasDraggedBAck方法的標誌,並且僅當該標誌被設置進行YES 。 –

+0

請參閱http://stackoverflow.com/questions/5991250/disable-gesture-recognizer –

回答

1

根據該文檔,所有UIGestureRecognizer類對象有一個enabled屬性。

它是什麼:

禁用一個手勢識別,因此不會收到觸摸。默認值是true。如果在手勢識別器當前正在識別手勢時將此屬性更改爲false,則手勢識別器將轉換爲取消狀態。

3

yes該有一個委託方法對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

你可以做這樣的事情,

gestureBack.enabled = false 
相關問題