簡體   English   中英

SpriteKit和UISwipeGestureRecognizer

[英]SpriteKit and UISwipeGestureRecognizer

在我的viewDidLoad函數中,我設置了一個滑動手勢識別器:

var swipeRecognizer:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("move"))
swipeRecognizer.direction = .Right
view.addGestureRecognizer(swipeRecognizer)

然后我設置了移動功能:

func move(swipe:UISwipeGestureRecognizer) {
    NSLog("swiped")
}

但是,當我向右滑動時,我不斷收到以下錯誤:

[_TtC8swiftris9GameScene move]: unrecognized selector sent to instance 0xc81c200
2014-06-03 14:52:57.560 swiftris[45440:6777826] 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[_TtC8swiftris9GameScene move]: unrecognized selector sent to instance 0xc81c200'

可能是什么問題呢?

您將函數定義為move(swipe:UISwipeGestureRecognizer) ,它映射到obj-c方法名稱move: ,但您的選擇器只是"move" 你需要使用"move:"代替。

正如@Kevin Ballard正確指出的那樣,你的選擇器與你的方法不匹配,這解釋了“無法識別的選擇器”異常。 但是,我認為值得注意的是,您可以完全拋棄轉換為Selector,並使用字符串文字代替它。

引用自

您可以使用字符串文字構造一個選擇器,例如讓mySelector:Selector =“tappedButton:”。 因為字符串文字可以自動轉換為選擇器,所以您可以將字符串文字傳遞給任何接受選擇器的方法。

例:

let gesture: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action:"move:")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM