我遇到了一个理解UIGestureRecognizers
的问题。我的目标是拥有一组手势识别器来执行不同的任务,例如:
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
代表屏幕上的一个精灵,我希望通过手势识别器与其进行交互。
我的问题是,如果我添加第二组手势识别器,轻击操作将完全无响应。我仍然可以缩放和平移,但我期望在地图瓦片上发生的轻击行为没有发生。我感觉自己缺乏对手势识别器的工作原理的理解。
有任何想法吗?
谢谢!
panRecognizer和tapRecognizer
或pinchRecoginzer和tapRecognizer
可以同时发生,正确吗?而且,这在两个tapRecognizers上也是同样适用的,对吗? - Aleksandr