2010-12-31 14 views
10

Posso usare il seguente codice per rilevare se la mia app è in esecuzione su iPad? La mia app deve essere eseguita su iOS 3.0 o versioni successive.È questo il modo corretto per rilevare un iPad?

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

risposta

28

utilizzare la macro UI_USER_INTERFACE_IDIOM() su iOS> = 3.2:

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

Nelle versioni precedenti di iOS, è possibile ripiegare al codice, vale a dire questo:

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

Questo approccio è compatibile con le versioni precedenti, nel senso che se l'anno prossimo Apple ha rilasciato un iPad diverso, il nome del modello potrebbe cambiare, ma la parola "iPad" sarà sicuramente all'interno della stringa.

+1

Aveva un buon motivo per utilizzare il metodo currentDevice oggi, anche per un'app 5.0+: volevo ottenere un comportamento speciale quando si eseguiva un'applicazione solo per iPhone su un ipad. UIUserInterfaceIdiom afferma di essere un telefono in quel caso. – rgeorge

5

No. Fate questo invece:

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

che dire di 3.0 e 3.1? – Moshe

+0

Per lo sviluppo per iOS 3.2 e successivi, è necessario utilizzare un SDK più recente che abbia definito 'UI_USER_INTERFACE_IDIOM()'. È una macro, e nelle precedenti versioni del sistema operativo si dedica a restituire sempre "UIUserInterfaceIdiomPhone'. Se utilizzi un SDK precedente, non sarai comunque in grado di eseguire lo sviluppo specifico dell'iPad in quanto non sarai in grado di abilitare la targeting di iPad. –

Problemi correlati