制作我自己的UIControlEvent,然后触发它?

时间:2011-05-26 15:55:56

标签: iphone objective-c notifications

我有一个我在viewcontroller里面制作的UIView的自定义类。我想让这个类可以重用,所以不想构建它只使用这个1 viewcontroller。因此,我认为告诉我的viewcontroller用户与类进行交互的最佳方式是以某种方式创建自己的UIControlEvent。也许是这样的:

[customClass addTarget:self action:@selector(whatIWantToHappen) forControlEvents:UIControlEventWhatever];

我对这方面的了解不多,对此有何建议?

2 个答案:

答案 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放弃了每次输入“枚举”的需要,这是习惯性的。