有没有办法“捕获”应用程序内的所有UIButton点击?

时间:2014-12-17 15:35:51

标签: ios objective-c swift uibutton swizzling

我希望能够跟踪用户点击的按钮。 有没有办法“捕获”或“记录”我的应用程序中的所有按钮水龙头?

我在考虑方法调整,但我真的不想进入。

3 个答案:

答案 0 :(得分:1)

Aspect Programming可能对您有所帮助。看看这个图书馆:

https://github.com/steipete/Aspects

基本上你做的事情如下:

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

有关所调用实例的更多信息,请查看AspectInfo。

答案 1 :(得分:0)

按钮可以附加多个动作。您始终可以为每个按钮添加日志记录操作。操作方法接收发件人,因此您可以记录有关已点击的按钮的信息。

答案 2 :(得分:0)

您可以将UIButton子类化以添加日志记录。

上接受的答案

objective C: Buttons created from subclass of UIButton class not working

有一个很好的解释,为什么这是子类化可能有用的少数几个实例之一。

基本上UIButton继承自UIControl和UIControl Class Reference状态

  

子类注释您可能希望扩展UIControl子类有以下两个原因:

     

观察或修改向特定事件的目标发送动作消息的信息   提供自定义跟踪行为(例如,更改突出显示外观)