UISwipeGesture '发送到实例的无法识别的选择器'
Posted
技术标签:
【中文标题】UISwipeGesture \'发送到实例的无法识别的选择器\'【英文标题】:UISwipeGesture 'unrecognized selector sent to instance'UISwipeGesture '发送到实例的无法识别的选择器' 【发布时间】:2016-06-24 01:53:03 【问题描述】:如果有人可以帮我解决这个问题,那就太好了!我花了几个小时试图修复,但没有运气
错误...
2016-06-23 20:30:43.341057 Scaling Rings[408:38903] [DYMTLInitPlatform] 平台初始化成功 2016-06-23 20:30:43.750822 缩放环[408:38776] 启用金属 GPU 帧捕获 2016-06-23 20:30:43.751531 比例环[408:38776] 启用金属 API 验证 2016-06-23 20:30:48.293661 缩放环 [408:38776]-[Scaling_Rings.MenuScene 幻灯片:]:无法识别的选择器发送到实例 0x145e1c410 2016-06-23 20:30:48.299061 Scaling Rings[408:38776] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Scaling_Rings.MenuScene 幻灯片:]:无法识别的选择器发送到实例 0x145e1c410” * 首先抛出调用栈: (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:以 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)
【问题讨论】:
您能否给我们提供更多关于视图的详细信息(在 didMove 中)。它需要能够访问幻灯片功能 @Sam 目前是整个 GameScene.swift 文件,我只是在运行一个测试项目以供将来参考使用手势 【参考方案1】:您需要将选择器声明更改为#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)
【讨论】:
非常感谢!这对我有帮助。【参考方案2】:斯威夫特 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
【讨论】:
以上是关于UISwipeGesture '发送到实例的无法识别的选择器'的主要内容,如果未能解决你的问题,请参考以下文章