gpt4 book ai didi

iphone - 如何让 UI_USER_INTERFACE_IDIOM() 与 iPhone OS SDK < 3.2 一起使用

转载 作者:行者123 更新时间:2023-12-03 18:15:06 25 4
gpt4 key购买 nike

Apple 建议使用以下代码来检测是否在 iPad 或 iPhone/iPod Touch 上运行:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// The device is an iPad running iPhone 3.2 or later.
// [for example, load appropriate iPad nib file]
}
else {
// The device is an iPhone or iPod touch.
// [for example, load appropriate iPhone nib file]
}

问题在于 UI_USER_INTERFACE_IDIOM() 和 UIUserInterfaceIdiomPad 未在 3.2 之前的 SDK 中定义。这似乎完全违背了这样一个功能的目的。它们只能在 iPhone OS 3.2 上编译和运行(iPhone OS 3.2 只能在 iPad 上运行)。因此,如果您可以使用 UI_USER_INTERFACE_IDIOM(),结果将始终指示 iPad。

如果您包含此代码和目标操作系统 3.1.3(最新的 iPhone/iPod Touch 操作系统)来测试 iPhone 绑定(bind)的通用应用程序代码,您将收到编译器错误,因为符号未在 3.1 中定义。 3 或更早版本,针对 iPhone 模拟器 3.1.3 进行编译时。

如果这是 Apple 推荐的运行时设备检测方法,我做错了什么?有人成功使用这种方法进行设备检测吗?

最佳答案

我这样做是为了让代码在 3.1.3 和 3.2 中都可以编译:

BOOL iPad = NO;
#ifdef UI_USER_INTERFACE_IDIOM
iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
#endif
if (iPad) {
// iPad specific code here
} else {
// iPhone/iPod specific code here
}

我还在这里写了一篇关于它的快速博客文章: http://www.programbles.com/2010/04/03/compiling-conditional-code-in-universal-iphone-ipad-applications/

关于iphone - 如何让 UI_USER_INTERFACE_IDIOM() 与 iPhone OS SDK < 3.2 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com