0

一連の手順を1つずつ実行する必要があります。全部で、whileループの内側にある3つのステップを実行する必要があります。3つのテストが完了したら、そのときだけ、ユーザーはwhileループを終了する必要があります。問題は、これらの手順を順番に実行する必要があり、ユーザーが各テストを順番に実行する必要があることです。合格した場合は、次の手順に進みます。

関連するコードは次のとおりです。

int passCount = 0;
    BOOL flatPass = FALSE;
    BOOL landscapePass = FALSE;
    BOOL portraitPass = FALSE;

while (passCount < 3) {


        if (flatPass == FALSE) {

            if (device.orientation == UIDeviceOrientationFaceUp || device.orientation == UIDeviceOrientationFaceDown) {

                [self pushSound];

            }

        }


        else if (landscapePass == FALSE) {

            if (device.orientation == UIDeviceOrientationLandscapeLeft || device.orientation == UIDeviceOrientationLandscapeRight) {

                [self pushSound];

            }

        }


        else if (portraitPass == FALSE) {

            if (device.orientation == UIDeviceOrientationPortrait || device.orientation == UIDeviceOrientationPortraitUpsideDown) {

                [self pushSound];

            }

        }

    }

ユーザーがiOSデバイスを各位置に配置する必要があり、テストが成功したことを示すためにビープ音が鳴ります。3つのテストがすべて順番に完了したら、ユーザーをループから終了させます。テストがクリアされるたびに、passCountカウンターを1ずつインクリメントして、ループから抜ける3に到達するまで計算します。私の問題は、各テストをどのように、そして順番に実行するかです。

4

2 に答える 2

0

あなたはそれを実装することができます

deviceDidRotate()

現在の進行状況を保存するためのオブジェクト変数が必要です。または、行ったように列挙型を使用します。

int step; 

次に、 deviceDidRotate で次を確認します。

   if (step == 0 && device.orientation == UIDeviceOrientationFaceUp ) {
     step = 1;
   } else if (step == 1 && device.orientation == UIDeviceOrientationLandscapeLeft) {
     step = 2;
   } else if (step == 2 && device.orientation == UIDeviceOrientationPortrait ) {
     // successful!
     // now do action, reset step? call method 
   }
于 2012-12-05T20:47:42.690 に答える
0

これがメイン UI スレッドで実行されていないと仮定して、whileループを削除し、それぞれを条件に置き換えて、ifテストに合格し、完了したら適切なブール値フラグを true に設定します。else ifwhile

于 2012-12-05T20:36:26.143 に答える