ユーザーがタップしているボタンを追跡できるようにしたいと考えています。アプリ内のすべてのボタンタップを「キャプチャ」または「ログ」する方法はありますか?
メソッドのスウィズリングについて考えていましたが、実際にはそれには入りません。
ユーザーがタップしているボタンを追跡できるようにしたいと考えています。アプリ内のすべてのボタンタップを「キャプチャ」または「ログ」する方法はありますか?
メソッドのスウィズリングについて考えていましたが、実際にはそれには入りません。
アスペクトプログラミングが役に立ちます。このライブラリを見てください:
https://github.com/steipete/Aspects
基本的にあなたは次のようなことをします:
[UIButton aspect_hookSelector:@selector(whateverSelectorYouWantToHookOn:)
withOptions:AspectPositionAfter
usingBlock:^(id<AspectInfo> aspectInfo) {
NSLog(@"UIButton called");
}
error:NULL];
呼び出されたインスタンスの詳細については、AspectInfo を参照してください。
UIButton をサブクラス化してログを追加できます。受け入れられた答え
目標 C: UIButton クラスのサブクラスから作成されたボタンが機能しない
これが、サブクラス化が役立つ可能性がある数少ない例の 1 つである理由について、適切な説明があります。
基本的に UIButton は UIControl およびUIControl Class Reference状態から継承します
サブクラス化に関する注意 次の 2 つの理由のいずれかで、UIControl サブクラスを拡張する必要がある場合があります。
特定のイベントのターゲットへのアクション メッセージのディスパッチを監視または変更する
ため カスタム トラッキング動作を提供するため (たとえば、ハイライトの外観を変更するため)
ボタンには、複数のアクションを関連付けることができます。各ボタンにいつでもロギング アクションを追加できます。アクション メソッドは送信者を受け取るため、タップされたボタンに関する情報をログに記録できます。