我最近被迫更新到
Swift 3.0,看起来Xcode的转换并没有做得很好.幸运的是,我能够手动解决大部分问题,但是,让我有点困惑.
在升级到Swift 3.0之前,这行覆盖uiController中的canBecomeFirstResponder方法:
override func canBecomeFirstResponder() -> Bool { return true }
但是,它现在返回错误:
Method does not override any method from its superclass.
但是,删除覆盖位似乎没有解决它,因为它引发了一个似乎与前一个相矛盾的不同错误:
Method ‘canBecomeFirstResponder()’ with Objective-C selector ‘canBecomeFirstResponder’ conflicts with getter for ‘canBecomeFirstResponder’ from superclass ‘UIResponder’ with the same Objective-C selector
实际上是否存在覆盖?为什么Xcode在这里给我混合信息?
作为参考,我看过this question,尽管它非常相似,但它是一个类,这是一个方法.为了安全起见,我确实尝试使用该问题的解决方案,它进一步破坏了事情并引发了同样的错误.
解决方法
canBecomeFirstResponder已从Swift 2.2中的方法更改为Swift 3.0中的属性.这意味着您必须更改代码以将其覆盖为属性而不是方法.
override var canBecomeFirstResponder: Bool { return true }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。