6

私はアプリ開発に少し慣れていません。viewController(VPviewController)には、次のコードがあります。

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

別のviewController(VPgameViewController)で、別のMotionShakeイベントがあります。

- (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にいて、iPhoneをシェイクすると、別のviewControllerシェイクイベントにあるstartGame関数も呼び出されます。

どうすればこれを止めることができますか?

4

1 に答える 1

2

VPViewController関数でシェイクイベント通知の受信を停止する必要があるようですviewWillDisappear:

一般に、viewControllerが表示されている場合にのみ特定のイベント通知を受信するようにするには、関数で通知をサブスクライブし、viewWillAppear:関数でサブスクライブを解除する必要がありviewWillDisappear:ます。

于 2012-11-21T19:26:51.013 に答える