[英]Can not make view firstResponder in viewDidAppear method
[英]Can non View class become a FirstResponder?
我有一个自定义类(MyEventHandler),它与我的应用程序中的UI无关。 我希望它能够捕获MotionShake事件。 据我了解,我需要使MyEventHandler成为第一响应者。
这就是我所做的。 我从UIResponder
继承了MyEventHandler
,并实现了canBecomeFirstResponder
方法。 但是,当我调用becomeFirstResponder
它返回0, [self isFirstResponder]
也返回0。
我检查了当前的第一响应者,结果为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
如果在不在视图层次结构上的View对象上调用becomeFirstResponder
,它将返回nil。
为了您的目的,当您在ViewController上接收到运动事件时,可以使用通知来告诉您的自定义类( MyEventHandler
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.