Powodem, dla którego muszę się dowiedzieć, jest to, że na iPadzie UIPickerView ma taką samą wysokość w orientacji poziomej, jak w przypadku portretu. Na iPhonie jest inaczej. Przewodnik programowania iPad wprowadza „idiom” wartość UIDevice:Najlepszy sposób programowego wykrywania sprzętu iPad/iPhone
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// iPad
}
else
{
// iPhone
}
który działa OK, gdy jesteś w iPadzie (3.2), ale nie iPhone (3.1.3) - tak wygląda tam również musi być ifdef warunkowo skompilować ten czek, jak:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200
UIDevice* thisDevice = [UIDevice currentDevice];
if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// etc.
}
#endif
dla mnie to zaczyna wyglądać bardzo niezdarny. Jaki jest lepszy sposób?
Jeśli przejdziesz do definicji UI_USER_INTERFACE_IDIOM(), zobaczysz, że używa ona właściwości [[UIDevice currentDevice] userInterfaceIdiom]. 'rolki statyczne UIUserInterfaceIdiom UI_USER_INTERFACE_IDIOM() { zwrotny ([[UIDevice currentDevice] respondsToSelector: @selector (userInterfaceIdiom)] [[UIDevice currentDevice] userInterfaceIdiom] UIUserInterfaceIdiomPhone?)' – KarenAnne
Yah! Tak znalazłem komentarz w ich dokumentach, który zacytowałem w tej odpowiedzi :) –
Co mam na myśli, możesz użyć 'UI_USER_INTERFACE_IDIOM()' nawet w systemie iOS 3.2 lub późniejszym, ponieważ jest to to samo co '[UIDevice currentDevice] .userInterfaceIdiom ] '. Dobrze? – KarenAnne