Is there a way to catch all sorts of user interactions, but first and foremost button presses in an iOS app? I\'m interested in logging these events with a time stamp and ideall
You can subclass UIApplication:
-(BOOL)sendAction:(SEL)action to:(id)target from:(id)sender forEvent:(UIEvent *)event
method, remember to call the super implementationNSLog
or other diagnostic code inside the implementationExample, this will print a log every time an UIButton is pressed:
-(BOOL)sendAction:(SEL)action to:(id)target from:(id)sender forEvent:(UIEvent *)event
{
if ([sender isKindOfClass:[UIButton class]])
{
NSLog(@"Action: %@ - %@ - %@", NSStringFromSelector(action), target, sender);
}
return [super sendAction:action to:target from:sender forEvent:event];
}
2013-07-08 14:46:18.270 UIApplicationSubclass[94764:c07] Action: anAction: - - >
2013-07-08 14:46:27.378 UIApplicationSubclass[94764:c07] Action: anAction: - - >
Moreover, to subclass UIApplication, you must change the main.m file like this (In my case the UIApplication subclass was named FLApplication, look at the third parameter of the UIApplicationMain function and the import of FLApplication.h)
#import "AppDelegate.h"
#import "FLApplication.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, NSStringFromClass([FLApplication class]), NSStringFromClass([AppDelegate class]));
}
}