2010-04-07 51 views
0

編程時(3.2版本)無法識別設備型號(iphone,ipad,ipod touch,iphpne模擬器)。 Alreay是用UIDevice Class和其他方法嘗試過的,但當連接到ipad時無法將模型作爲ipad。每次它都會給ipad以外的其他型號。所以任何人都可以幫助我。謝謝。如何在3.2版本中編程時識別iphone,ipad,ipod touch,iphpne模擬器?

+0

顯示你如何獲得模型的一段代碼可能會有所幫助。此外,如果你真的在模擬器的物理iPad上運行。 – 2010-04-07 13:13:55

+1

你使用過'[UIDevice model]'嗎? – notnoop 2010-04-07 13:17:36

回答

1

我用這個代碼和它的作品真的很好:

size_t size; 
sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
char *machine = malloc(size); 
sysctlbyname("hw.machine", machine, &size, NULL, 0); 
NSString *platform = [NSString stringWithCString:machine]; 
free(machine); 
return platform; 

這來自arstechnica.com

+0

是的,但恕我直言,這不是公共API的一部分,所以你可能遇到新的iPhoneOS版本或最糟糕的麻煩,你可能會拒絕你的應用程序。 – yonel 2010-04-07 15:13:58

+0

不幸的是,你可能是對的......我已經在App Store中使用它的應用程序,真正的問題可能只有未來的iPhoneOS版本.. – bontoJR 2010-04-07 15:19:39

0

一般的做法是避免嘗試自己猜測設備模型。在大多數情況下(但你沒有描述你最初的需求),框架爲你提供了API的硬件功能,你並不需要知道你現在使用的是哪種模型。

舉例來說,如果你想知道,如果攝像頭可用,你不會在你的代碼檢查 if (model==iphone3G || model==iPhone3Gs)

你只是要問類似[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]是公共API的一部分。

0

我想你可能想檢查[UIDevice userInterfaceIdiom]。在iPad或iPad上,這將返回UIUserInterfaceIdiomPad。在其他設備或SIM卡上,它將返回UIUserInterfaceIdiomPhone。