Xcode:将 UIButton 类更改为自定义类后,已发送事件消失
Posted
技术标签:
【中文标题】Xcode:将 UIButton 类更改为自定义类后,已发送事件消失【英文标题】:Xcode: Sent Events Disappear upon changing UIButton class to custom class 【发布时间】:2015-03-24 21:07:29 【问题描述】:我创建了一个自定义 UIButton 类:
class MyButton: UIButton
然后我向我的故事板添加了一个 UIButton 并将其类更改为 MyButton。
现在,当我右键单击并拖动按钮进行编码时,我可以添加 Outlet 但不能添加 Action。 “已发送事件”部分在属性检查器中也消失了。我可能会错过什么?
【问题讨论】:
Xcode 确实很糟糕,我已经在 8.1 版本上因为同样烦人的错误而浪费了如此宝贵的时间,令人难以置信的是,Apple 如何在成熟产品的这样一个基本功能上失败,真可惜。重启对我不起作用:\ 【参考方案1】:到目前为止,我发现的唯一技巧是将按钮类改回 UIButton,添加请求的操作,然后将类改回 MyButton:/ 错误仍然存在。
【讨论】:
【参考方案2】:我可以通过保存并重新启动 Xcode 来解决此问题。
【讨论】:
【参考方案3】:我知道这个问题已经快两年了,但我今天遇到了。重新启动 Xcode 没有帮助。我注意到在一些较旧的 .xib 中,有一些链接的已发送事件,但所有其余的 touchDown
等选项都丢失了。然而,在我将鼠标悬停在剩余的已发送事件之一的源上之后,Xcode 弹出了一条'UIButton' is no longer a valid event source
消息。 In this link,有人发现该问题与 UIButton 的扩展有关。果然,我将我们必须的 UIButton 扩展重构为 UIControl 并返回所有 Sent Event 选项。
根据 OP 的问题和我今天阅读的内容,Apple 正试图告诉我们不要理会他们的按钮。 :)
【讨论】:
【参考方案4】:您可以轻松地使用此代码
override func awakeFromNib()
self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchDown)
self.addTarget(self, action: "buttonUnClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.addTarget(self, action: "buttonUnClicked:", forControlEvents: UIControlEvents.TouchUpOutside)
func buttonClicked(sender: UIButton)
self.backgroundColor = UIColor.redColor()
func buttonUnClicked(sender: UIButton)
self.backgroundColor = UIColor.blackColor()
【讨论】:
以上是关于Xcode:将 UIButton 类更改为自定义类后,已发送事件消失的主要内容,如果未能解决你的问题,请参考以下文章
无法将UIButton的自定义类更改为GIDSignInButton
对于 iOS,将 ViewController.xib 自定义类更改为另一个类是啥意思?