UISwipeGesture 'unrecognized selector sent to instance'
UISwipeGesture 'unrecognized selector sent to instance'
如果有人能帮我解决这个问题,那就太好了!我花了几个小时尝试修复,但没有成功
错误...
2016-06-23 20:30:43.341057 Scaling Rings[408:38903] [DYMTLInitPlatform] platform initialization successful
2016-06-23 20:30:43.750822 Scaling Rings[408:38776] Metal GPU Frame Capture Enabled
2016-06-23 20:30:43.751531 Scaling Rings[408:38776] Metal API Validation Enabled
2016-06-23 20:30:48.293661 Scaling Rings[408:38776] -[Scaling_Rings.MenuScene slide:]: unrecognized selector sent to instance 0x145e1c410
2016-06-23 20:30:48.299061 Scaling Rings[408:38776] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Scaling_Rings.MenuScene slide:]: unrecognized selector sent to instance 0x145e1c410'
* First throw call stack:
(0x190ad9980 0x1900d44bc 0x190ae0778 0x190add6e0 0x1909de61c 0x196e13754 0x196e16e5c 0x1969f6b3c 0x196894900 0x196e0747c 0x196e07100 0x196e06338 0x196892a24 0x1968638c8 0x19701efd4 0x19701941c 0x190a8a3f0 0x190a89cc8 0x190a87938 0x1909ba2e4 0x19239315c 0x1968ce6fc 0x1968c9438 0x1000a1d44 0x19055c600)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
代码...
import Foundation
import SpriteKit
var startRing = SKShapeNode()
class MenuScene: SKScene {
func slide(sender: AnyObject){
debugPrint("WORKS")
}
override func didMove(to view: SKView) {
let upSwipe = UISwipeGestureRecognizer(target: self, action: Selector("slide:"))
upSwipe.direction = .up
view.addGestureRecognizer(upSwipe)
}
}
您需要将选择器声明更改为 #selector(slide)
并在方法参数前添加下划线 func slide(_ sender: UISwipeGestureRecognizer)
:
class GameScene: SKScene {
@objc func slide(_ sender: UISwipeGestureRecognizer){
print("WORKS")
}
override func didMove(to view: SKView) {
let upSwipe = UISwipeGestureRecognizer(target: self, action: #selector(slide))
upSwipe.direction = .up
view.addGestureRecognizer(upSwipe)
}
}
Swift 4.2
在下面的例子中,我们使用一个参数来分配目标。这只能用字符串
来完成
func createBtn(action:String) -> UIButton {
let btn:UIButton = UIButton(type: .system)
btn.addTarget(self, action: Selector(action), for: .touchUpInside)
return btn
}
@objc func buttonTouched(_ sender:UIButton) {//The _ char is imp
Swift.print("buttonTouched")
}
let btn = createButton(action:"buttonTouched:")//The : char is imp
如果有人能帮我解决这个问题,那就太好了!我花了几个小时尝试修复,但没有成功
错误...
2016-06-23 20:30:43.341057 Scaling Rings[408:38903] [DYMTLInitPlatform] platform initialization successful 2016-06-23 20:30:43.750822 Scaling Rings[408:38776] Metal GPU Frame Capture Enabled 2016-06-23 20:30:43.751531 Scaling Rings[408:38776] Metal API Validation Enabled 2016-06-23 20:30:48.293661 Scaling Rings[408:38776] -[Scaling_Rings.MenuScene slide:]: unrecognized selector sent to instance 0x145e1c410 2016-06-23 20:30:48.299061 Scaling Rings[408:38776] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Scaling_Rings.MenuScene slide:]: unrecognized selector sent to instance 0x145e1c410' * First throw call stack: (0x190ad9980 0x1900d44bc 0x190ae0778 0x190add6e0 0x1909de61c 0x196e13754 0x196e16e5c 0x1969f6b3c 0x196894900 0x196e0747c 0x196e07100 0x196e06338 0x196892a24 0x1968638c8 0x19701efd4 0x19701941c 0x190a8a3f0 0x190a89cc8 0x190a87938 0x1909ba2e4 0x19239315c 0x1968ce6fc 0x1968c9438 0x1000a1d44 0x19055c600) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)
代码...
import Foundation
import SpriteKit
var startRing = SKShapeNode()
class MenuScene: SKScene {
func slide(sender: AnyObject){
debugPrint("WORKS")
}
override func didMove(to view: SKView) {
let upSwipe = UISwipeGestureRecognizer(target: self, action: Selector("slide:"))
upSwipe.direction = .up
view.addGestureRecognizer(upSwipe)
}
}
您需要将选择器声明更改为 #selector(slide)
并在方法参数前添加下划线 func slide(_ sender: UISwipeGestureRecognizer)
:
class GameScene: SKScene {
@objc func slide(_ sender: UISwipeGestureRecognizer){
print("WORKS")
}
override func didMove(to view: SKView) {
let upSwipe = UISwipeGestureRecognizer(target: self, action: #selector(slide))
upSwipe.direction = .up
view.addGestureRecognizer(upSwipe)
}
}
Swift 4.2
在下面的例子中,我们使用一个参数来分配目标。这只能用字符串
来完成func createBtn(action:String) -> UIButton {
let btn:UIButton = UIButton(type: .system)
btn.addTarget(self, action: Selector(action), for: .touchUpInside)
return btn
}
@objc func buttonTouched(_ sender:UIButton) {//The _ char is imp
Swift.print("buttonTouched")
}
let btn = createButton(action:"buttonTouched:")//The : char is imp