是否可以访问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/