SpriteKit和UISwipeGestureRecognizer

时间:2014-06-03 19:55:05

标签: ios uiswipegesturerecognizer swift

在我的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'

可能是什么问题?

2 个答案:

答案 0 :(得分:4)

您将自定义为move(swipe:UISwipeGestureRecognizer)的函数,该函数映射到obj-c方法名称move:,但您的选择器只是"move"。您需要改为使用"move:"

答案 1 :(得分:3)

正如@Kevin Ballard正确指出的那样,你的选择器与你的方法不匹配,这解释了“无法识别的选择器”异常。但是,我认为值得注意的是,您可以完全抛弃转换为Selector,并使用字符串文字代替。

Quote from

  

您可以使用字符串文字构造一个选择器,例如let   mySelector:Selector =“tappedButton:”。因为字符串文字可以   自动转换为选择器,您可以将字符串文字传递给   任何接受选择器的方法。

示例:

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