例えばクリスマス期間限定で雪を降らせる演出を追加したい場合、SKViewを使えば簡単に既存の Viewの上に効果を追加できますが、イベントを透過させてやる必要があるのです。
SKViewのサブクラスを作成して、hittestを上書きする。これでイベントが透過されます。
class skView: SKView { required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override init(frame: CGRect) { super.init(frame: frame) } override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { let hitView:UIView? = super.hitTest(point, with: event) if(self == hitView) { return nil } return hitView } /* // Only override draw() if you perform custom drawing. // An empty implementation adversely affects performance during animation. override func draw(_ rect: CGRect) { // Drawing code } */ }
サンプルコードをこちらに置いておきます。