将我自己的事件添加到Interface Builder菜单中的"已发送事件",以用于我自己的自定义UIView

dre*_*yln 11 cocoa-touch objective-c uibutton uiview

我已经创建了UIView的子类,我想让它发布在Interface Builder(实际上是Xcode4)中显示的自定义事件,就像右键单击UIButton之类的控件在"已发送事件"区域中有一堆事件一样在Xcode 4设计师的控件上.我知道我可以使用委托(通过协议)或通知(通过U​​INotificationCenter)让对象使用我的自定义视图知道某些事情何时发生,但我想知道"目标 - 行动机制"(描述于可可基础指南(Cocoa Fundamentals Guide)适合/期望/可能使用并与Xcode设计器集成.这个方法主要来自.NET背景,似乎与.NET事件模型密切相关,对我来说最有意义.

Cal*_*leb 5

UIControlEventApplicationReserved,它为您提供应用程序可以使用的一系列事件标识符.但是,我认为没有任何方法可以告诉Interface Builder有关应用程序定义的事件,因此您不会像在UIControl的标准事件中那样获得IB中事件的相同支持.相反,您必须在代码中为每个应用程序定义的事件指定目标和操作.(如果我在这一点上弄错了,请有人纠正我.)这一点都不困难,但有点不同.

  • 已经是“2022”了,但仍然不可能!至少对于“Swift 5”和“Catalyst”来说不是。 (2认同)

She*_*eep 5

执行此操作的一个简单方法是扩展,UIControl而不是UIView允许您将目标添加到所有默认事件(与UIButton等相同)。

注意:为了让我的自定义UIControl处理事件而不是我分层的控件,我必须确保userInteractionEnabled = NO在所有分层控件上都设置了该事件。