目標は、最も一般的なタッチ イベントを除外して 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
もう 1 つのオプションは、UIButton を拡張してほしいというものでした。ただし、UIButton はいわゆるクラス クラスター (ファクトリに相当) であるため、サブクラス化によって拡張する必要はありませんが、UIButton の親クラスである UIControl にカテゴリを作成することによって拡張できます。これで、返されるサブクラスに関係なく、任意のボタンの任意のインスタンスが拡張されます。
彼は、実際には UIButton と実際のクラスは UIControl の上の小さなレイヤーにすぎないという事実についての知識を示してほしいと思っていたと思います。UIButton には、ボタンのラベル、画像、… を表示するという可能性しかありません。他のすべてのものは UIControl にあり、その祖先です。