我有一个我在viewcontroller里面制作的UIView的自定义类。我想让这个类可以重用,所以不想构建它只使用这个1 viewcontroller。因此,我认为告诉我的viewcontroller用户与类进行交互的最佳方式是以某种方式创建自己的UIControlEvent。也许是这样的:
[customClass addTarget:self action:@selector(whatIWantToHappen) forControlEvents:UIControlEventWhatever];
我对这方面的了解不多,对此有何建议?
答案 0 :(得分:9)
您可以通过继承自UIView的UIControl
进行子类化,但提供一些其他方法来处理目标和操作。看看constants,也许其中一个预定义的控制事件已经适合您的账单。否则,您可以在UIControlEventApplicationReserved
提供的范围内定义自己的事件,但是永远不会使用UI...
为您自己的事物添加前缀,而'名称空间'是为UIKit保留的。
答案 1 :(得分:2)
除了omz的答案之外,在执行此操作时可能会收到编译器警告:
[self addTarget:self action:@selector(selector:) forControlEvents:CustomControlEvent];
编译器不喜欢用于最后一个参数的自定义值,该参数类型为UIControlEvents
,因此会抛出警告。
我这样做了:
enum CustomControlEvent : UIControlEvents
{
CustomControlEventWHATEVER = UIControlEventApplicationReserved
};
typedef enum CustomControlEvent CustomControlEvent;
看哪!没有更多的警告。
我在this StackOverflow回答中找到了这个符号。
N.B。对于UIControlEvents
,我强烈避免使用任何不可用的值,因此我只使用 UIControlEventApplicationReserved
值。
此外,typedef放弃了每次输入“枚举”的需要,这是习惯性的。