TouchesBegan不在swift 2.0中工作

时间:2015-09-14 22:02:02

标签: ios import swift2 ios9 xcode7-beta6

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

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

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

在我看来,它是导入代码的测试版错误或我的配置有问题。欢迎任何建议。谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

我从它的颜色中得到了线索。 swift Set有紫色,Mine custom Set有浅蓝色。

无论如何,我不认为,这是一个常见的问题。但我仍然想发表我的回答

答案 2 :(得分:0)

这些方法似乎不再在UIViewController类中调用,而它们仍在其子视图中。虽然我还没有想出如何直接与我的UIViewController接触,但有几种方法可以满足您的需求。

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

希望它有所帮助...

答案 3 :(得分:0)

要查找的一件事是,您是否以编程方式向视图添加了手势,或者是否在该故事板ViewController中向视图添加了手势。如果该手势具有&#34;在视图中取消触摸&#34;在故事板中选择或者如果您以编程方式将其设置为true,它可以阻止任何&#34;触摸&#34;被调用的覆盖。