2016-08-29 7 views
1

Ich habe eine Übersicht mit mehreren Schaltflächen und Bildern. Ich ziehe diese Karte wie eine Zunderschnittstelle.Vorübergehend deaktivieren Gestenerkennung Wischfunktion

Ich möchte in der Lage sein, den Benutzer zu stoppen, die Karte an einigen Punkten zu ziehen und sie an anderen zu erlauben.

Ich habe versucht, es zu deaktivieren, aber die Art, wie ich es tat, deaktivierte alle Benutzerinteraktion mit der ganzen Ansicht, die das Wischen anhielt, aber auch das Anhalten der Benutzer, die ich nicht tun möchte (ich will sie nur stoppen) . Diese

ist, wie ich die Swipe initiieren:

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

Dies ist, wie ich versucht, falsch die swiping zu stoppen:

self.backview.userInteractionEnabled = true 

Wie kann ich die Ansicht halten nur von klauen, ohne sie alle zu beeinflussen Die anderen Schaltflächen befinden sich in der Ansicht.

Dank

+0

Zuerst versuchen gestureBAck.enabled = NO, wenn es nicht funktioniert, dann müssen Sie einen Flag in Ihrer wasDraggedBAck Methode setzen, und nur fortfahren, wenn das Flag gesetzt ist JA . –

+0

pls verweisen http://stackoverflow.com/questions/5991250/disable-gesture-recognizer –

Antwort

1

die Dokumentation nach, alle UIGestureRecognizer Klassenobjekte hat eine enabled Eigenschaft.

Was sie tut, ist:

eine Geste Erkenner deaktiviert, damit es nicht berührt empfängt. Der Standardwert ist wahr. Wenn Sie diese Eigenschaft in false ändern, während eine Gestenerkennung derzeit eine Geste erkennt, wird der Gestenerkenner in einen abgebrochenen Zustand versetzt.

3

ja für diese gibt es eine delegierte Methode ist für UIGestureRecognizer u die delegierte Methode wie unter

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

einstellen und bestätigen auch wie zu delegieren,

class ViewController: UIViewController,UIGestureRecognizerDelegate { 

} 

und endlich diese Delegierten verwenden Methode zum Auslösen der Aktion,

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

Sie können wie etwas tun,

gestureBack.enabled = false 
Verwandte Themen