方法与超类中的方法冲突 - 覆盖给出错误 [重复]

Posted

技术标签:

【中文标题】方法与超类中的方法冲突 - 覆盖给出错误 [重复]【英文标题】:Method conflicts with Method from Superclass - Override gives error [duplicate] 【发布时间】:2015-11-12 18:38:03 【问题描述】:

我有class Menu: SKScene,然后是func touchesBegan,这给了我以下错误:

使用 Objective-C 选择器 'touchesBegan:withEvent:' 的方法 'touchesBegan(:withEvent:)' 与具有相同目标的超类 'UIResponder' 的方法 'touchesBegan(:withEvent:)' 冲突-C 选择器

无论如何,如果我在函数前面添加覆盖,它会说:

方法不会覆盖其超类中的任何方法。

有什么想法吗?整个代码:

import SpriteKit

class Menu: SKScene 




var title : SKLabelNode?
var start : SKLabelNode?

override func didMoveToView(view: SKView) 

    backgroundColor = SKColor.whiteColor()

    self.title = SKLabelNode(fontNamed: "Chalkduster")
    self.start = SKLabelNode(fontNamed: "Chalkduster")

    self.title!.name = "title"
    self.start!.name = "new"


    self.addChild(self.title!)
    self.addChild(self.start!)


    func touchesBegan(touches: NSSet, withEvent even: UIEvent) 

        self.menuHelper(touches)
    

    func menuHelper(touches: NSSet) 
        for touch in touches 
            let nodeAtTouch = self.nodeAtPoint(touch.locationInNode(self))
            if nodeAtTouch.name == "title" 
                print("Title pressed")
            
            else if nodeAtTouch.name == "new" 
                print("Start pressed")
            
        

    

【问题讨论】:

【参考方案1】:

此方法的签名(来自文档)是...

func touchesBegan(_ touches: Set<UITouch>, withEvent event: UIEvent?)

touchesUITouch 对象的 Set(不是 NSSet),event 是可选的 UIEvent

你还需要覆盖它...

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) 
    self.menuHelper(touches)

【讨论】:

非常感谢!仍在学习基础知识。

以上是关于方法与超类中的方法冲突 - 覆盖给出错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

“方法不会覆盖其超类中的任何方法”Swift 3 [重复]

覆盖 touchesBegan:错误 - 方法不会覆盖超类中的任何方法

Swift 错误 - 方法不覆盖其超类中的任何方法

在java中,我们可以通过传递超类方法中使用的参数的子类来覆盖方法吗?

方法不会覆盖其超类 swift 3.0 错误中的任何方法 [重复]

supportedInterfaceOrientations 方法不会覆盖其超类中的任何方法