我最近被迫更新到Swift 3.0,看起来Xcode的转换并没有做得很好.幸运的是,我能够手动解决大部分问题,但是,让我有点困惑.
canBecomeFirstResponder在升级到Swift 3.0之前,这行覆盖了uiController中的方法:
override func canBecomeFirstResponder() -> Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
但是,它现在返回错误:
方法不会覆盖其超类中的任何方法.
但是,删除该override位似乎并没有解决它,因为它引发了一个似乎与前一个相矛盾的不同错误:
具有Objective-C选择器'canBecomeFirstResponder'的方法'canBecomeFirstResponder()'与来自超类'UIResponder'的'canBecomeFirstResponder'的getter冲突,具有相同的Objective-C选择器
实际上有覆盖发生吗?为什么Xcode会在这里给我发送混合信息?
作为参考,我已经看过这个问题,虽然它非常相似,但它是关于一个类,这是关于一个方法.为了安全起见,我确实尝试使用该问题的解决方案,它进一步破坏了事情并引发了同样的错误.
rob*_*off 28
canBecomeFirstResponder从Swift 2.2中的方法更改为Swift 3.0中的属性.这意味着您必须更改代码以将其覆盖为属性而不是方法.
override var canBecomeFirstResponder: Bool { return true }
Run Code Online (Sandbox Code Playgroud)