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 '发送到实例的无法识别的选择器'的主要内容,如果未能解决你的问题,请参考以下文章

无法识别的选择器发送到实例

无法识别的选择器发送到数组中的实例[重复]

如何解决“发送到实例的无法识别的选择器”?

[UICollectionViewCell imageView]:无法识别的选择器发送到实例

无法识别的选择器发送到实例 Objective-C

“无法识别的选择器发送到实例”,即使 XCode 说实例是正确的类型