私はUIGestureRecognizers
の問題を抱えています。私の目標は、今例えば、異なるタスクを実行するために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)
これは私が、このような、マップの周りにパン、ズーム、およびマップタイルをタップなどのアクションを扱う私のゲームビューコントローラであります。しかし、私はまたUITapGestureRecognizer
でスプライトを動かすことができるようにしたいので、私はまた私の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)
}
}
この場合landShip
は、私はジェスチャー経由と対話したい画面上のスプライトの代表であります認識装置。
私の問題は、この2番目の認識器セットを追加すると、タップ動作が完全に反応しなくなるということです。私はまだズームとパンができますが、マップタイルで期待しているタップ動作は発生しません。ジェスチャー認識プログラムの仕組みを理解していないように感じます。
アイデア?
ありがとうございます!
感謝を!ステップ2で明確にするために、その関数は 'panRecognizerとtapRecognizer'または' pinchRecoginzerとtapRecognizer'が同時に起こることを意味していますか?これは2つのtapRecognizersで同じように動作しますか? – Aleksandr
@Aleksandr、これは、パンニングがタップ認識を妨げず、ピンチでもそれをしないことを意味します。他のタップレコグナイザオブジェクトを追加する場合は、それを手動で関数の条件に追加する必要があります。どのように動作するかをよりよく理解するために、この関数の中にいくつかのロギングを配置することができます。 –