2010-12-31 21 views
10

¿Puedo usar el siguiente código para detectar si mi aplicación se ejecuta en un iPad? Mi aplicación necesita ejecutarse en iOS 3.0 o superior.¿Es esta la forma correcta de detectar un iPad?

if([[[UIDevice currentDevice] model] isEqualToString:@"iPad"]){ 
    //Do iPad stuff. 
} 

Respuesta

28

utilizar la macro UI_USER_INTERFACE_IDIOM() en IOS> = 3.2:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    //device is an iPad. 
} 

En las versiones anteriores de iOS, se puede caer de nuevo a su código, a saber esto:

NSRange ipadRange = [[[UIDevice currentDevice] model] rangeOfString:@"iPad"]; 
if(ipadRange.location != NSNotFound) { 
    //Do iPad stuff. 
} 

Este enfoque es compatible con versiones anteriores en el sentido de que si el año próximo Apple lanza un iPad diferente, el nombre del modelo podría cambiar, pero la palabra "iPad" definitivamente estará en algún lugar dentro de la cadena.

+1

Tenía una buena razón para utilizar el método actualDevice hoy, incluso para una aplicación 5.0+: quería obtener un comportamiento especial al ejecutar una aplicación solo para iPhone en un ipad. UIUserInterfaceIdiom dice ser un teléfono en ese caso. – rgeorge

5

Nope. Hacer esto en su lugar:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    // ... 
} 
+0

¿qué hay de 3.0 y 3.1? – Moshe

+0

Para desarrollar para iOS 3.2 y versiones posteriores, debe usar un SDK más nuevo que tenga 'UI_USER_INTERFACE_IDIOM()' definido. Es una macro, y en las versiones anteriores del sistema operativo, siempre devuelve 'UIUserInterfaceIdiomPhone'. Si está utilizando un SDK anterior, no podrá realizar el desarrollo específico de iPad de todos modos, ya que no podrá habilitar la orientación de iPad. –

Cuestiones relacionadas