2010-12-31 27 views
10

क्या मैं यह पता लगाने के लिए निम्न कोड का उपयोग कर सकता हूं कि मेरा ऐप आईपैड पर चल रहा है या नहीं? मेरे ऐप को आईओएस 3.0 या उच्चतम पर चलाने की जरूरत है।क्या यह आईपैड का पता लगाने का सही तरीका है?

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

उत्तर

28

iOS पर UI_USER_INTERFACE_IDIOM() मैक्रो> = 3.2 का उपयोग करें:

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

आईओएस के पुराने संस्करणों पर, आप, अर्थात् यह आपके कोड पर वापस आ सकते हैं:

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

यह दृष्टिकोण इस अर्थ में आगे-संगत है कि अगर अगले वर्ष ऐप्पल ने एक अलग आईपैड जारी किया, तो मॉडल का नाम बदल सकता है, लेकिन "आईपैड" शब्द निश्चित रूप से स्ट्रिंग के अंदर कहीं होगा।

+1

आज 5.0D ऐप के लिए वर्तमानडिवाइस विधि का उपयोग करने का एक अच्छा कारण था: आईपैड पर एक आईफोन-केवल ऐप चलाने पर कुछ विशेष व्यवहार प्राप्त करना चाहता था। UIUserInterfaceIdiom उस मामले में एक फोन होने का दावा करता है। – rgeorge

5

नहीं। इस के बजाय कार्य करें:

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

3.0 और 3.1 के बारे में क्या? – Moshe

+0

आईओएस 3.2 और नए के लिए विकसित करने के लिए, आपको एक नए एसडीके का उपयोग करना होगा जिसमें 'UI_USER_INTERFACE_IDIOM()' परिभाषित किया गया है। यह एक मैक्रो है, और पहले ओएस संस्करणों पर यह हमेशा 'UIUserInterfaceIdiomPhone' वापस करने के लिए devolves। यदि आप पुराने एसडीके का उपयोग कर रहे हैं, तो आप आईपैड-विशिष्ट विकास को वैसे भी करने में सक्षम नहीं होंगे क्योंकि आप आईपैड लक्ष्यीकरण को सक्षम नहीं कर पाएंगे। –

संबंधित मुद्दे