在我的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'
可能是什么问题?
答案 0 :(得分:4)
您将自定义为move(swipe:UISwipeGestureRecognizer)
的函数,该函数映射到obj-c方法名称move:
,但您的选择器只是"move"
。您需要改为使用"move:"
。
答案 1 :(得分:3)
正如@Kevin Ballard正确指出的那样,你的选择器与你的方法不匹配,这解释了“无法识别的选择器”异常。但是,我认为值得注意的是,您可以完全抛弃转换为Selector,并使用字符串文字代替。
您可以使用字符串文字构造一个选择器,例如let mySelector:Selector =“tappedButton:”。因为字符串文字可以 自动转换为选择器,您可以将字符串文字传递给 任何接受选择器的方法。
示例:
let gesture: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action:"move:")