2

ユーザーがタップしているボタンを追跡できるようにしたいと考えています。アプリ内のすべてのボタンタップを「キャプチャ」または「ログ」する方法はありますか?

メソッドのスウィズリングについて考えていましたが、実際にはそれには入りません。

4

3 に答える 3

1

アスペクトプログラミングが役に立ちます。このライブラリを見てください:

https://github.com/steipete/Aspects

基本的にあなたは次のようなことをします:

[UIButton aspect_hookSelector:@selector(whateverSelectorYouWantToHookOn:) 
                  withOptions:AspectPositionAfter 
                   usingBlock:^(id<AspectInfo> aspectInfo) {
   NSLog(@"UIButton called");
} 
error:NULL];

呼び出されたインスタンスの詳細については、AspectInfo を参照してください。

于 2014-12-17T15:52:28.267 に答える
0

UIButton をサブクラス化してログを追加できます。受け入れられた答え

目標 C: UIButton クラスのサブクラスから作成されたボタンが機能しない

これが、サブクラス化が役立つ可能性がある数少ない例の 1 つである理由について、適切な説明があります。

基本的に UIButton は UIControl およびUIControl Class Reference状態から継承します

サブクラス化に関する注意 次の 2 つの理由のいずれかで、UIControl サブクラスを拡張する必要がある場合があります。

特定のイベントのターゲットへのアクション メッセージのディスパッチを監視または変更する
ため カスタム トラッキング動作を提供するため (たとえば、ハイライトの外観を変更するため)

于 2014-12-17T15:55:22.507 に答える
0

ボタンには、複数のアクションを関連付けることができます。各ボタンにいつでもロギング アクションを追加できます。アクション メソッドは送信者を受け取るため、タップされたボタンに関する情報をログに記録できます。

于 2014-12-17T15:40:25.627 に答える