是否可以访问SKScene类中的dismiss()? Dismiss是可从Apples UIKit获得的方法,这里是指向dismiss上苹果官方文档的链接。

class GameScene: SKScene {

}


尝试从IBAction示例中解雇:

    @IBAction func dismissTapped(_ sender: Any) {
     //figure out how to dismiss
    }


解除通常会这样使用-

dismiss(animated: true, completion: nil)

最佳答案

dismiss是UIviewController而非SKScene上的方法。但是,您的场景确实具有一个view属性,该属性是其包含的视图(这是一个SKView,这是一个UIView,这是一个UIResponder)。您可以使用从next继承的视图的UIResponder方法来遍历响应者链,直到您点击第一个视图控制器(因为UIViewController也是UIResponder):

extension UIResponder {
    func firstParent<T: UIResponder>(ofType type: T.Type ) -> T? {
        return next as? T ?? next.flatMap { $0.firstParent(ofType: type) }
    }
}


//Use in your SKScene like so
view?.firstParent(ofType: UIViewController.self)?.dismiss(animated: true, completion: nil)

关于ios - 作法:让SKScene存取dismiss()UIKit方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55302452/

10-10 12:32