私はSKSceneでスワイプ認識を設定していますが、すべての認識器がハードコーディングに時間がかかることがわかりました。 forループと、UISwipeRecognizer
をキーとする辞書を使用し、()
は値として機能します。宣言しながら、'#selector'の引数が '@objc'メソッドを参照していません
class xxxxx: SKScene {
let rightSwipeRecognizer = UISwipeGestureRecognizer()
let leftSwipeRecognizer = UISwipeGestureRecognizer()
let upSwipeRecognizer = UISwipeGestureRecognizer()
let downSwipeRecognizer = UISwipeGestureRecognizer()
var swipeRecognizers: [UISwipeGestureRecognizer] {
return [rightSwipeRecognizer, leftSwipeRecognizer, upSwipeRecognizer, downSwipeRecognizer]
}
var directionForRecognizer: [UISwipeGestureRecognizer : UISwipeGestureRecognizerDirection] {
return [
rightSwipeRecognizer : .right,
leftSwipeRecognizer : .left,
upSwipeRecognizer : .up,
downSwipeRecognizer : .down
]
}
func didSwipeRight() {}
func didSwipeLeft() {}
func didSwipeUp() {}
func didSwipeDown() {}
var functionForRecognizer: [UISwipeGestureRecognizer :()] {
return [
rightSwipeRecognizer : didSwipeRight(),
leftSwipeRecognizer : didSwipeLeft(),
upSwipeRecognizer : didSwipeUp(),
downSwipeRecognizer : didSwipeDown()
]
}
func setupSwipeRecognizers() {
for recognizer in swipeRecognizers {
recognizer.addTarget(self, action: #selector(functionForRecognizer[recognizer]!))
recognizer.direction = directionForRecognizer[recognizer]!
self.view?.addGestureRecognizer(recognizer)
}
}
override func didMove(to view: SKView) {
super.didMove(to: view)
setupSwipeRecognizers()
}
}
ところで、私は@objc
を入れてみました:問題はここrecognizer.addTarget(self, action: #selector(functionForRecognizer[recognizer]!))
を使用してターゲットを追加しようとしたときに、それがタイトルに私にエラーを与えることであることはコードがあります機能は動作しませんでした。また、クラスをNSObjectに公開しようとしましたが、SKSceneから継承を取り除いてNSObjectに準拠させましたが、それでも動作しませんでした。また、クラスをUIKitクラスに準拠させることはできません.CSSはSKSceneとして必要ですし、UIViewController(SKSceneなし)にも準拠しようとしましたが、まだ動作しませんでした。