SpriteKit和UISwipeGestureRecognizer

3

在我的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个回答

4

您定义的函数名为 move(swipe:UISwipeGestureRecognizer),对应的Obj-C方法名为move:,但是选择器只是"move"。 您需要使用"move:"


3

正如@Kevin Ballard所指出的那样,您的选择器与您的方法不匹配,这解释了“未识别的选择器”异常。然而,我认为值得注意的是,您可以完全放弃对Selector的转换,而使用一个字符串字面量代替它。

引用自

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

示例:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接