目标C:是否可以通过一个类拦截所有用户操作?

时间:2015-12-25 02:56:02

标签: ios objective-c

是否可以在我的应用的所有窗口上截取所有用户操作,例如点按,滑动,输入文字等?

1 个答案:

答案 0 :(得分:3)

就像我在评论中所说,子类UIApplication并覆盖实例方法sendEvent:

来自UIApplication类的documentation-sendEvent:方法:

  

<强>讨论

     

如果您需要,可以截取传入的事件   继承UIApplication并重写此方法。对于每个事件   你拦截,你必须通过调用[super sendEvent:event]来调度它   在您的实施中处理事件后。

所以,它看起来像这样:

<强> CustomUIApplication.h:

@interface CustomUIApplication:UIApplication
- (void)sendEvent:(UIEvent *)event;
@end

<强> CustomUIApplication.m:

@implementation CustomUIApplication

- (void)sendEvent:(UIEvent *)event
{
    // ...Do your thing...

    [super sendEvent:event];
}
@end

当然,您需要确保使用您的子类而不是默认的UIApplicationHere is a Stack Overflow answer on how to do it in Objective-Chere in Swift