8

向きの変更(ポートレート/風景)を処理するアプリの機能をテストしたいと思います。私は現在KIFを使用していますが、私が知る限り、これを行うことはできません。iOSシミュレーター用にプログラムで回転イベントをシミュレートする方法はありますか?

文書化されていないプライベートAPIであるかハックであるかは関係ありません。これはテスト中にのみ実行され、本番ビルドの一部ではないためです。

4

4 に答える 4

9

これを実現するための手順は次のとおりです。

+ (KIFTestStep*) stepToInterfaceOrientation: (UIInterfaceOrientation) toInterfaceOrientation {

    NSString* orientation = UIInterfaceOrientationIsLandscape(toInterfaceOrientation) ? @"Landscape" : @"Portrait";
        return [KIFTestStep stepWithDescription: [NSString stringWithFormat: @"Rotate to orientation %@", orientation]
                             executionBlock: ^KIFTestStepResult(KIFTestStep *step, NSError *__autoreleasing *error) {
                                 if( [UIApplication sharedApplication].statusBarOrientation != toInterfaceOrientation ) {
                                     UIDevice* device = [UIDevice currentDevice];
                                     SEL message = NSSelectorFromString(@"setOrientation:");

                                     if( [device respondsToSelector: message] ) {
                                         NSMethodSignature* signature = [UIDevice instanceMethodSignatureForSelector: message];
                                         NSInvocation* invocation = [NSInvocation invocationWithMethodSignature: signature];
                                         [invocation setTarget: device];
                                         [invocation setSelector: message];
                                         [invocation setArgument: &toInterfaceOrientation atIndex: 2];
                                         [invocation invoke];
                                     }
                                 }

                                 return KIFTestStepResultSuccess;
                             }];
}

注:デバイスをテーブル上で平らに保つと、加速度計が更新されてビューが元に戻ります。

于 2012-08-14T08:25:10.467 に答える
4

UIオートメーションで方向の変更をシミュレートするには、UIATargetのsetDeviceOrientationメソッドを使用できます。例:

UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPELEFT);

メソッドには、1つのパラメーター「deviceOrientation」定数が必要です。詳細はこちら

この100%は実際のiOSデバイスで動作します。シミュレーターについてはよくわかりません。

于 2012-08-23T11:47:47.910 に答える
0

「プログラムで」の意味はわかりませんが、Appleが提供するUIAutomationライブラリをInstrumentsアプリケーションの自動化テンプレートと一緒に使用すると、iPhoneでサポートされているさまざまな方向をシミュレートできます。

于 2012-06-25T22:51:56.270 に答える
-3

なぜそれをプログラム的に行うのですか?シミュレーターはあなたが望むことを正確に実行し、向きの変更を処理するアプリの能力をテストします。

シミュレータで、トップメニューの[ハードウェア]> [左/右に回転]を使用するか、コマンドを押したまま左右の矢印を使用します。

于 2012-06-25T23:33:55.393 に答える