我有一个自定义类(MyEventHandler),它与我的应用程序中的UI无关。我希望它能够捕获一个MotionShake事件。据我所知,我需要让MyEventHandler成为第一响应者。
这就是我所做的。
我从MyEventHandler
继承了UIResponder
并实施了canBecomeFirstResponder
方法。但是,当我调用becomeFirstResponder
时,它返回0,[self isFirstResponder]
也是如此。
我检查了当前的第一响应者,结果是nil
。
如果我使用我的ViewController执行相同的操作,它可以正常工作,所以我的问题是:是否可以创建一个自定义类,它不会从第一响应者UIView继承?
这是我的代码:
@interface MyEventHandler : UIResponder
- (void)start;
@end
@implementation MyEventHandler
- (void)start {
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"Shake-shake-shake!");
}
}
@end