2012-09-18 41 views
0

我閱讀Apress - Beginning iPad Development for iPhone Developer Mastering the iPad SDK並在第一章我讀到設備檢查和作者寫之間的iPad或iPhone/iPod的區別:檢查,如果用戶的設備是兩種方式

「雖然你可能會temped簡單地檢查用戶的設備類型或操作系統版本,在Apple不斷髮布新設備和iOS版本的情況下,這不是一種好的方法,更好的方法是使用NSClassFromString測試獨立iPad類的可用性,如果您通過僅限iPad的類名稱,比如UISplitViewController到NSClassString,有效的對象是Returnet,你就會知道用戶的設備是iPad ..「

NSString *device = [[UIDevice currentDevice] model]; 

    if ([device rangeOfString:@"iPad"].location != NSNotFound) { 
     isIPad = true; 
    } 
    else isIPad = false; 

比檢查的ipad類更糟:我不明白,爲什麼只需例如通過檢查設備類型?

+0

HTTP:/ /stackoverflow.com/questions/12479344/checking-if-users-device-is-ipad-or-iphon e-ipod-between-two-ways/23518735#23518735 –

回答

7

的方式,蘋果將檢查自己的例子,當你開始一個新的通用應用程序,像這樣:

-(BOOL) isiPad { 
    return UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad; 
} 

爲什麼使用模型可能是壞的原因是因爲你僅僅使用一個字符串比較。雖然我懷疑他們會改變它,但你永遠不知道他們什麼時候可以決定將使用[[UIDevice currentDevice] model]返回的字符串更改爲型號或別的東西。

+0

我認爲這隻有在您的應用程序具有iPad界面時纔有效。如果不是這樣,並且您希望在iPad上運行時允許有一些細微差異(例如,允許應用旋轉到兩個縱向方向?) – BergQuester

+0

我已經證實了我的懷疑。 – BergQuester

-1

可能是這種方法幫助你

-(int)CheckDevice { 

return ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) ? 1 :([[UIScreen mainScreen] bounds].size.height == 568) ? 5 :4; 
} 

其返回

  • 1爲iPad
  • 4 iphone 4
  • 5 iphone 5