我正在尝试检测 iPhone 设备上的震动,因此对于我所读到的内容,我需要将我的视图控制器设置为 viewDidAppear 方法的第一响应者。这个方法应该被自动调用,但由于某种原因,这个方法永远不会被调用。仅调用 viewDidLoad。
这是我的代码(我只放了相关部分):
BuildHouseViewController.h:
@interface BuildHouseViewController : UIViewController {
BuildHouseViewController.m:
- (void)viewDidLoad {
[super viewDidLoad];
[self.view becomeFirstResponder];}
-(void)viewDidAppear:(BOOL)animated{
[self becomeFirstResponder];
[super viewDidAppear:animated];}
-(BOOL)canBecomeFirstResponder {
return YES;}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{
NSLog(@"shake");
if ( event.subtype == UIEventSubtypeMotionShake )
{ }
if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
[super motionEnded:motion withEvent:event];
}
我在 viewDidAppear 方法上添加了断点,它从未被调用过。永远不会检测到震动,我想这是因为从未调用过此方法,因此视图控制器永远不会成为第一响应者。我不明白为什么会这样。
任何帮助将不胜感激。
编辑:
我使用以下方法从另一个视图调用视图:
[self.view addSubview:nextScreen.view];
视图显示在屏幕上