我想我们的目标是制作一个 UIControl 的快捷类,同时考虑到最常见的触摸事件UIControlEventTouchUpInside
:
@interface MiniButton : UIControl
-(void)addTarget:(id)target action:(SEL)action;
-(void)removeTarget:(id)target action:(SEL)action;
-(void)_callAllTargets;
@end
@implementation MiniButton
-(void)addTarget:(id)target action:(SEL)action
{
[self addTarget:target action:action forControlEvents: UIControlEventTouchUpInside];
}
-(void)removeTarget:(id)target action:(SEL)action{
[self removeTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
}
-(void) _callAllTargets
{
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
}
@end
另一种选择可能是,他希望您扩展 UIButton。但是由于UIButton是一个所谓的类簇(相当于一个工厂),它不应该通过子类来扩展,而是可以通过在UIButton的父类UIControl上创建一个类来扩展。现在,任何按钮的任何实例都被扩展,无论返回什么子类。
我想他想让你展示一些关于这个事实的知识,实际上 UIButton 和它真正的类只是 UIControl 之上的一个小层。UIButton 只能显示按钮的标签、图像……。所有其他东西都驻留在 UIControl 和它的祖先中。