将手势识别器添加到SKShapeNode Swift 4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将手势识别器添加到SKShapeNode Swift 4相关的知识,希望对你有一定的参考价值。

我希望当用户在SKShapeNode上向上滚动时执行一个函数。

我可以使用以下代码为整个视图执行此操作:

let swipeUp:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedUp:"))
swipeUp.direction = .up
view?.addGestureRecognizer(swipeUp);

如何修改此代码以适用于SKShapeNode。谢谢

答案

通常,您无法将姿势识别器添加到SKScene的实例,因为该类不是UIKit的一部分。但是,由于您已将手势识别器添加到视图中,因此可以使用单独的处理程序方法来响应滑动手势。

override func didMove(to view: SKView) {
    let swipeUpGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(self.handleSwipeFrom))
    self.view!.addGestureRecognizer(swipeUpGestureRecognizer)
}

@objc func handleSwipeFrom(_ recognizer: UISwipeGestureRecognizer) {
    switch recognizer.state {
    case .changed:
        if recognizer.direction == .up {
            let touchInView = recognizer.location(in: recognizer.view)
            let touch = convertPoint(fromView: touchInView)
            let nodeArray = nodes(at: touch)
            for node in nodeArray {
                if node.name == "my shape node" {
                    // You've got a reference to your shape node and can take some action here (add movement or whatever)
                }
            }
        }
    default:
        return
    }
}

以上是关于将手势识别器添加到SKShapeNode Swift 4的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 将手势识别器添加到表格单元格中的对象

UICollectionView:将单击手势识别器添加到补充视图

将滑动手势识别器添加到 DetailViewContoller

将向上滑动手势识别器添加到模态视图

将手势识别器添加到表格单元格中的图像视图

无法将点击手势识别器添加到 SwiftUI MKMapView UIViewRepresentable