2011-11-30 80 views
1

我想检查设备是iPhone还是iPad使用macroiPhone:如何使用MACRO检查设备?

我有一个文件Constant.h其中我使用#define给出了值。

现在,我想检查设备使用#ifdef#endif

只有在.m文件中才可以使用Follwing方法。

但我只有一个.h只。

- (BOOL) isPad{ 
    #ifdef UI_USER_INTERFACE_IDIOM 
     return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); 
    #else 
     return NO; 
    #endif 
} 

那么上面的方法对我无用吗?

有没有办法做到这一点?或者其他方式?

+0

#ifdef UI_USER_INTERFACE_IDIOM在Xcode 6.3+中被破坏,因为它不再是预处理器定义的 – k3a

回答

3

您无法通过宏来检查它,因为宏在编译期间被展开。所以你需要在编译时知道设备类型。

如果您希望在运行时支持这两种设备,则需要检查设备类型并使用适当的一组常量。

0
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200 
    UIDevice* thisDevice = [UIDevice currentDevice]; 
    if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) 
    { 
    // etc. 
    } 
#endif 
+0

这在.h文件中是不可能的。 – Devang

5

我对这个问题的答案很简单。

#define isiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? YES : NO) 

如果设备是iPad,则返回1,如果设备是iPod或iPhone,则返回0。