【问题标题】: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 文件,我只是在运行一个测试项目以供将来参考使用手势

标签: ios swift swift3


【解决方案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

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 2012-07-24
    相关资源
    最近更新 更多