例えばクリスマス期間限定で雪を降らせる演出を追加したい場合、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
    }
    */

}

 

サンプルコードをこちらに置いておきます。