【发布时间】:2014-04-15 10:09:59
【问题描述】:
我有一个自定义类 (MyEventHandler),它与我的应用程序中的 UI 无关。我希望它能够捕捉到 MotionShake 事件。据我了解,我需要让 MyEventHandler 成为第一响应者。
这就是我所做的。
我从UIResponder继承了MyEventHandler并实现了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
【问题讨论】:
标签: ios objective-c motionevent shake uiresponder