ここで明らかな何かが欠けているに違いありませんが...
UIControl にはメソッドがあります
- (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents
これにより、指定された controlEvents のいずれかが発生したときに呼び出されるアクションを追加できます。ControlEvents は、タッチがダウンしたか、内部でアップしたか、ドラッグされたかなどを示すイベントのビットマスクです。約 16 個あります。ユーザーまたはそれらを合わせて、それらのいずれかが発生したときに呼び出されます。
セレクターは、次のいずれかの署名を持つことができます
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)
制御イベントのビットマスクが何であったかを示すものはありません。UIEvent は少し異なります。実際のタッチ イベントに関連しており、(私が思うに) UIControlEvent は含まれていません。送信者 (UIControl) にも、コントロール イベントを見つける方法がありません。
どのイベントが発生したかに関係なく、いくつかの共通コードがあるため、多数のコントロール イベントを処理する 1 つのメソッドが必要ですが、特定の処理のために UIControlEvents が何であったかを知る必要があります。
アクションが呼び出されたときにどの UIControlEvents が使用されたかを確認する方法がありませんか、それともコードを次のように分割する必要がありますか?
- (void)actionWithUIControlEventX;
- (void)actionWithUIControlEventY;