Hay bastantes formas de verificar si un dispositivo es un iPad. Esta es mi forma favorita de verificar si el dispositivo es de hecho un iPad:
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
return YES; /* Device is iPad */
}
La forma en que lo uso
#define IDIOM UI_USER_INTERFACE_IDIOM()
#define IPAD UIUserInterfaceIdiomPad
if ( IDIOM == IPAD ) {
/* do something specifically for iPad. */
} else {
/* do something specifically for iPhone or iPod touch. */
}
Otros ejemplos
if ( [(NSString*)[UIDevice currentDevice].model hasPrefix:@"iPad"] ) {
return YES; /* Device is iPad */
}
#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if ( IPAD )
return YES;
Para una solución Swift, vea esta respuesta: https://stackoverflow.com/a/27517536/2057171
UI_USER_INTERFACE_IDIOM()
es equivalente a([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
. Usted puede ser mejor almacenamiento en caché el resultado en alguna parte:BOOL iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; … if (iPad) …
.if UIDevice.currentDevice().userInterfaceIdiom == .Pad
En Swift puede usar las siguientes igualdades para determinar el tipo de dispositivo en las aplicaciones universales:
El uso sería algo así como:
fuente
userInterfaceIdiom
está 'Disponible en iOS 3.2 y versiones posteriores'. así que ese no debería ser el problema..Phone
lugar de.Pad
.Esto es parte de UIDevice a partir de iOS 3.2, por ejemplo:
fuente
También puedes usar esto
fuente
UI_USER_INTERFACE_IDIOM()
solo devuelve el iPad si la aplicación es para iPad o Universal. Si es una aplicación de iPhone que se ejecuta en un iPad, entonces no lo hará. Por lo tanto, debería verificar el modelo.fuente
Tenga cuidado: si su aplicación está dirigida solo a un dispositivo iPhone, el iPad que se ejecuta con el modo compatible con iPhone devolverá falso para la siguiente declaración:
La forma correcta de detectar un dispositivo iPad físico es:
fuente
Descubrí que alguna solución no me funcionó en el simulador dentro de Xcode. En cambio, esto funciona:
ObjC
Rápido
También en los 'Otros ejemplos' en Xcode, el modelo del dispositivo regresa como 'Simulador de iPad', por lo que el ajuste anterior debería solucionarlo.
fuente
hasSuffix:@"iPad"
lugar deisEqualToString@"iPad"
... su mejor opción es registrar el modelo de dispositivo que el simulador devuelve y listo a partir de ahí ...Muchas formas de hacerlo en Swift :
Verificamos el modelo a continuación (solo podemos hacer una búsqueda sensible a mayúsculas y minúsculas aquí):
Verificamos el modelo a continuación (podemos hacer una búsqueda sensible a mayúsculas / minúsculas aquí):
UIDevice.currentDevice().userInterfaceIdiom
a continuación solo devuelve el iPad si la aplicación es para iPad o Universal. Si se trata de una aplicación de iPhone que se ejecuta en un iPad, entonces no lo hará. Por lo tanto, debería verificar el modelo. :Este fragmento a continuación no se compila si la clase no hereda de un
UIViewController
, de lo contrario, funciona bien. IndependientementeUI_USER_INTERFACE_IDIOM()
solo devuelve iPad si la aplicación es para iPad o Universal. Si se trata de una aplicación de iPhone que se ejecuta en un iPad, entonces no lo hará. Por lo tanto, debería verificar el modelo. :fuente
* *
* *
fuente
Muchas respuestas son buenas, pero las uso así en Swift 4
Crear constante
Usar así
Editar: como se sugiere, Cœur simplemente crea una extensión en UIDevice
fuente
App
estructura cuando puedes hacer lo mismo con unaUIDevice
extensión?Puede consultar rangeOfString para ver la palabra que existe iPad así.
fuente
["I am not an iPad" rangeOfString:@"iPad"].location != NSNotFound
devuelve verdaderoOtra forma más rápida:
Uso:
fuente
En Swift 4.2 y Xcode 10
Si quieres detectar un dispositivo específico
fuente
¿Por qué tan complicado? Así es como lo hago ...
Swift 4:
De esta manera solo puedes decir
if iPad {}
fuente
Para las últimas versiones de iOS, simplemente agregue
UITraitCollection
:y luego en
UIViewController
solo verificar:fuente
fuente