bearbeiten
ich von your recent question sehen, dass Sie auch eine pan Gestenerkenner verwenden. Gestenerkenner wissen nicht wirklich gut miteinander ohne Anleitung zu spielen. Sie haben zwei Möglichkeiten
1) Der eine oder andere:
[panGesture requireGestureRecognizerToFail:swipeGesture];
Die Pfanne wird nur ausgelöst, wenn die Berührung nicht Swipe ist. oder-
2) beide zur gleichen Zeit:
Conform die das UIGestureRecognizerDelegate
Protokoll.
Stellen Sie die Delegierten:
panGesture.delegate = self;
swipeGesture.delegate = self;
und Umsetzung der Methode:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
Original-
Gerade jetzt Sie die Ansicht v
als Ziel des Erkennungs einstellen, so im Wesentlichen, wenn der Swipe erkannt wird, ruft der Recognizer:
[v handleSwipe:self];
Es scheint wahrscheinlicher, dass beide Methoden in einem View-Controller sind. Wenn das der Fall ist, dann sollte der init-Methode wie folgt aussehen:
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSwipe:)];
Da v
das beabsichtigte Ziel ist und mit diesem Gedanken Code ist in Ordnung; Ich würde denken, die nächste wahrscheinlichste Ursache ist, dass Ihr erstes Stück Code vor der Ansicht v
lädt ausgeführt wird. d.h. der Code ist nicht in viewDidLoad
, nachdem v
bereits existiert. Wenn Sie nicht sicher ein einfaches Protokoll sind wird es die Existenz bestätigen:
NSLog(@"v is %@",v);
Wenn das eine Sackgasse erweist werden wir auf jeden Fall weitere Informationen v
auf dieser Ansicht erfordern. Was ist es Superklasse? Gibt es andere Erkenner darauf? Wie wird es zur view
hinzugefügt?
Übrigens. Wie simulierst du den Swipe? Machst du es mit UIAutomation? Dann musst du dich auch ein bisschen in x Richtung bewegen. – dasdom
Ich glaube, Swipe ist nichts als eine schnelle Pfanne über eine kleine Entfernung. – JAM