私は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 メソッドにブレークポイントを追加しましたが、呼び出されません。シェイクが検出されないのは、このメソッドが呼び出されないため、View Controller がファーストレスポンダーにならないためだと思います。なぜこれが起こっているのかわかりません。
どんな助けでも大歓迎です。
編集:
次を使用して、別のビューからビューを呼び出します。
[self.view addSubview:nextScreen.view];
ビューが画面に表示されます