La razón por la que necesito averiguar es que en un iPad, un UIPickerView tiene la misma altura en orientación horizontal como en vertical. En un iPhone es diferente. La guía de programación del iPad introduce un valor de "lenguaje" a UIDevice:mejor manera de detectar mediante programación iPad/iPhone hardware
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// iPad
}
else
{
// iPhone
}
que funciona bien mientras estás en el iPad (3.2), pero no iPhone (3.1.3) - lo que parece que también es necesario que haya un ifdef para compilar condicionalmente el registro de entrada, como:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// etc.
}
#endif
para mí que está empezando a parecer muy torpe. ¿Cuál es una mejor manera?
Si se salta a la definición de UI_USER_INTERFACE_IDIOM(), verá que usa la propiedad [[UIDevice currentDevice] userInterfaceIdiom]. 'estático en línea UIUserInterfaceIdiom UI_USER_INTERFACE_IDIOM() { retorno ([[UIDevice currentDevice] respondsToSelector: @selector (userInterfaceIdiom)] [[UIDevice currentDevice] userInterfaceIdiom]: UIUserInterfaceIdiomPhone?);' – KarenAnne
Yah! Así es como encontré el comentario en sus documentos que cité en esta respuesta :) –
Lo que quiero decir es que puedes usar 'UI_USER_INTERFACE_IDIOM()' incluso en iOS 3.2 o posterior porque es lo mismo que '[UIDevice currentDevice] .userInterfaceIdiom ] '. ¿Derecha? – KarenAnne