2010-12-31 8 views
10

Czy mogę użyć następującego kodu, aby sprawdzić, czy moja aplikacja działa na iPadzie? Moja aplikacja musi działać w systemie iOS 3.0 lub nowszym.Czy to właściwy sposób na wykrycie iPada?

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

Odpowiedz

28

Użyj UI_USER_INTERFACE_IDIOM() makra na iOS> = 3.2:

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

na wcześniejszych wersjach iOS, można spaść z powrotem do kodu, a mianowicie to:

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

To podejście jest zgodne z przyszłością w tym sensie, że jeśli w następnym roku Apple wyda inny iPad, nazwa modelu może się zmienić, ale słowo "iPad" z pewnością znajdzie się gdzieś w ciągu znaków.

+1

Miał dobry powód, aby skorzystać z metody currentDevice już dziś, nawet dla aplikacji 5.0+: chciał uzyskać pewne szczególne zachowanie podczas uruchamiania aplikacji na ipad. UIUserInterfaceIdiom twierdzi, że w tym przypadku jest telefonem. – rgeorge

5

Nie. Czy to w zamian:

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

co z wersjami 3.0 i 3.1? – Moshe

+0

Aby utworzyć na system iOS 3.2 i nowszy, należy użyć nowszego zestawu SDK z definicją "UI_USER_INTERFACE_IDIOM()". To makro, a we wcześniejszych wersjach systemu operacyjnego zawsze przekazuje 'UIUserInterfaceIdiomPhone'. Jeśli używasz starszego zestawu SDK, i tak nie będziesz w stanie tworzyć aplikacji na iPada, ponieważ nie będziesz w stanie włączyć funkcji targetowania na iPada. –

Powiązane problemy