2012-11-21 9 views
6

私はちょっとしたアプリ開発をしています。私は別のMotionShakeイベントを有する異なるのViewController(VPgameViewController)でxcode ios 6 shake motion calls前のビューのIBaction

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
    if (motion == UIEventSubtypeMotionShake){  
     [self startGame:nil]; 
    } 
} 

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{ 
    if(event.subtype == UIEventSubtypeMotionShake){ 
     if(count < 3){ 

      [self changeText:nil]; 
      AudioServicesPlaySystemSound(1016); 
      count++; 

     }else{ 

      count = 0; 
      AudioServicesPlaySystemSound(1024); 
      UIStoryboard *storyboard = self.storyboard; 
      VPpoepViewController *shit = [storyboard instantiateViewControllerWithIdentifier:@"PoepViewController"]; 
      shit.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
      [self presentViewController:shit animated:YES completion:nil]; 
     } 
    } 
} 

私はVPgameViewにしていると私が振るときのViewController(VPviewController)で、私は次のコードを持っていますまた、別のviewControllerシェイクイベントにあるstartGame関数を呼び出すiPhoneもあります。

どうすればいいですか?

+0

多分この(http://stackoverflow.com/questions/1342674/motionbegan-not-working)は役に立ちます – basvk

+0

私は最初のレスポンダーになり、最初のレスポンダーを辞任することができます。しかし、それは助けにはならない。 –

+0

XcodeまたはiOSで動きを検出しますか?後者の場合は、iOSとXcodeを混同しないでください。 iOSアプリケーションの作成にXcodeは必要ありません。 –

答えて

2

VPViewControllerは、viewWillDisappear:機能で揺れイベント通知を受信しないようにする必要があります。

通常、viewControllerで特定のイベント通知を受け取るには、表示されているときだけviewWillAppear:機能の通知に登録し、viewWillDisappear:機能では登録を解除する必要があります。

+0

これを行う最善の方法は何ですか? –

+1

viewControllerがシェイクジェスチャーに応答するかどうかを制御するには、 'viewController'に' BOOL respondsToShakeGesture'クラス変数を導入する必要があります。 'motionBegan'と' motionEnded'関数では、このブール値がfalseであればすぐに戻ります。最後に、 'viewWillAppear:'関数ではboolの値をtrueに設定し、 'viewWillDisappear:'関数ではboolの値をfalseに設定します。 – kadam

関連する問題