0

我正在使用 Xcode 7.1 和 iOS 9.1 测试版。我从 Xcode 6.2 导入了我的工作代码,我收到一条错误消息“方法不会覆盖其超类中的任何方法”

它不是最新的 swift 语法问题。我已经排除了以下情况:

  1. swift 2.0 的语法已更新:
      override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?)
    
  2. 在 Xcode 中重写时,xcode 本身会建议语法。
  3. 最重要的是,如果我创建一个新的测试项目并尝试覆盖 touchesBegan,我看不到这个问题。问题仅在于导入的代码。
  4. 我在 UIViewController 子类中重写了这个方法。
  5. 同样的问题在 Xcode 7 beta 6 中也可以重现

在我看来,要么是导入代码的 beta 错误,要么是我的配置有问题。欢迎任何建议。谢谢您的帮助。

4

5 回答 5

1

如果您导入了代码,它可能仍在尝试链接到另一个项目。如果您将代码粘贴到 TextEdit 中然后重新复制它,这将破坏您的代码可能具有的任何链接。

您也可以尝试将 Xcode 更新到最新版本。

试试看,让我知道它是怎么回事。

于 2016-02-26T13:33:24.533 回答
0

好吧,我们将代码从 Xcode 6.2 移动到 Xcode 7。在我的项目中,我们在某处有一个 SET 类。所以,在迁移之后,即使我有正确的 swift 2.0 语法,我也无法弄清楚为什么我仍然会遇到最重要的问题。

我从它的颜色中得到了线索。swift Set 为紫色,而我的自定义 Set 为浅蓝色。

无论如何,我不认为,这是一个普遍的问题。但我仍然想发布我的答案

于 2015-09-17T01:55:29.340 回答
0

这是我创建函数时自动出现的那个。试试这个。我刚刚更新到 xCode 7,这对我有用。下次当你从 Swift 自动为你完成的函数中得到错误时,试试看。我删除了 touchesBegan 函数,然后开始重写 touchesBegan,这就是它自动完成的。

override func touchesBegan(touches: Set<UITouch>?, withEvent event: UIEvent?) {    
    //Code
}
于 2015-09-20T01:31:04.440 回答
0

要查找的一件事是您是否以编程方式或向该故事板 ViewController 中的视图添加了手势。如果该手势在情节提要中选择了“取消视图中的触摸”,或者您以编程方式将其设置为 true,则可以防止调用任何“触摸”覆盖。

于 2016-05-06T02:04:48.473 回答
0

这些方法似乎不再在 UIViewController 类中调用,而它们仍在其子视图中。虽然我还没有弄清楚如何直接从我的 UIViewController 联系到那些人,但有几种方法可以得到你需要的东西。

您可以使您的视图成为自定义类并接收/处理在您自己的 UIView 类中收到的触摸,或者 - 如果您需要 touchesBegan 以在任何地方点击时正确关闭键盘 - 只需UITapGestureRecognizer在您的 UIViewController 中添加一个并将其添加到它在所有其他潜在子视图下方查看,例如文本字段或按钮:view.insertSubview(gestureRecognizer, atIndex: 0)。或者,使用 Storyboard 将 TapGestureRecognizer 拖到所需的视图并将其作为操作连接@IBAction func viewTapped(sender: AnyObject)到您的故事板。

希望能帮助到你...

于 2015-10-18T14:38:31.423 回答