Ich habe ein Problem mit UIGestureRecognizers
kennengelernt. Mein Ziel ist im Moment eine Reihe von GestureRecognizers haben unterschiedliche Aufgaben zu tun, zum Beispiel:Umgang mit mehreren GestureRecognizers
override func viewDidLoad() {
mainScene = GameScene(size: self.view.bounds.size)
main = view as! SKView
mainScene.panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(shiftView(recognizer:)))
main.addGestureRecognizer(mainScene.panRecognizer)
mainScene.tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(testTap(recognizer:)))
main.addGestureRecognizer(mainScene.tapRecognizer)
mainScene.pinchRecognizer = UIPinchGestureRecognizer(target: self, action: #selector(zoomView(recognizer:)))
main.addGestureRecognizer(mainScene.pinchRecognizer)
Das ist mein Spiel-View-Controller ist, wo ich Aktionen behandeln wie um eine Karte Schwenken, Zoomen und Tippen auf Kartenkacheln . Aber ich mag auch in der Lage sein, Sprites zu bewegen mit einem UITapGestureRecognizer
so ich schaffte auch in meinem GameScene
:
if startGame == true{
self.startGame()
for node in (self.tempGameBoard.landShipLayer.children as? Array<landship>)! {
node.landShipInteraction = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
parentViewController.view.addGestureRecognizer(node.landShipInteraction)
}
}
Die landShip
in diesem Fall ist repräsentativ für einen Sprit auf dem Bildschirm, die ich mit über interagieren möchte Geste Erkenner.
Mein Problem ist, dass, wenn ich diese zweite Gruppe von Erkennern hinzufüge, die Tippaktion vollständig nicht mehr reagiert. Ich kann zwar immer noch zoomen und schwenken, aber das Tippverhalten, das ich auf meinen Kartenkacheln erwarte, kommt nicht vor. Ich habe das Gefühl, dass mir das Verständnis der Gestenerkennung fehlt.
Irgendwelche Ideen?
Danke!
Dank! Nur um in Schritt 2 zu verdeutlichen, dass diese Funktion bedeutet, dass der 'panRecognizer und tapRecognizer' oder der 'pinchRecoginzer' und der tapRecognizer 'gleichzeitig korrekt sein können? Und das wird mit zwei tapRecognizers genauso funktionieren? – Aleksandr
@Aleksandr, bedeutet dies, dass das Schwenken die Antippen-Erkennung nicht verhindern wird UND die Pinch auch nicht. Wenn Sie ein anderes Objekt zur Erkennung von Tap-Erkennern hinzufügen möchten, müssen Sie es manuell zur Bedingung der Funktion hinzufügen. Sie können eine Protokollierung in diese Funktion einfügen, um besser zu verstehen, wie sie funktioniert. –