非View类可以成为FirstResponder吗?

时间:2014-04-15 10:10:00

标签: ios objective-c motionevent shake uiresponder

我有一个自定义类(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

0 个答案:

没有答案