Simular cambios de orientación en iOS para propósitos de testing.

Me gustaría probar la capacidad de mi aplicación para manejar los cambios de orientación (retrato / paisaje). Actualmente estoy usando KIF y, por lo que sé, no puede hacer esto. ¿Hay alguna manera de simular los events de rotation programáticamente para el simulador de iOS?

No me importa si es un API privado indocumentado o piratear porque esto solo se ejecutará durante las testings y no formará parte de las comstackciones de producción.

Aquí hay un paso para lograr esto:

+ (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 shanetworkingApplication].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; }]; } 

Nota: Mantenga su dispositivo plano sobre una table o las actualizaciones del acelerómetro girarán la vista hacia atrás.

Para simular el cambio de orientación en la automation de interfaz de usuario, puede utilizar el método setDeviceOrientation para UIATarget. Ejemplo:

 UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_LANDSCAPELEFT); 

El método necesita un parámetro 'deviceOrientation' constante. Más información aquí

Este 100% funciona en el dispositivo iOS real. No estoy seguro sobre el simulador.

No sé a qué se refiere con 'programáticamente', pero si usa la biblioteca UIAutomation proporcionada por Apple junto con la plantilla de Automatización de la aplicación de Instrumentos, puede simular diferentes orientaciones compatibles con el iPhone.

¿Por qué hacerlo de manera programática? El simulador hace exactamente lo que quiere, testing la capacidad de las aplicaciones para manejar los cambios de orientación.

En el Simulador use el menu superior Hardware> Girar a la izquierda / derecha o mantenga presionado el command y use las flechas izquierda y derecha.