Работает ли UI_USER_INTERFACE_IDIOM с семейством целевых устройств - PullRequest
2 голосов
/ 02 июля 2010

Так что в настоящее время я использую UI_USER_INTERFACE_IDIOM в сочетании с [[UIDevice currentDevice] модель], чтобы проверить, нахожусь ли я на iPhone, iPod или iPad. Я обнаружил, что в имитаторе iPad 3.2 UI_USER_INTERFACE_IDIOM по-прежнему оценивается как UIUserInterfaceIdiomPhone (iPhone).

Мне интересно, связано ли это с настройкой моего семейства целевых устройств. Я только нацеливаю iPhone на свое приложение (я не хочу делать универсальное приложение с масштабируемыми представлениями). Тем не менее, я поддерживаю 3.2 SDK, поэтому я все еще хочу, чтобы пользователи, у которых есть iPad, могли запускать мое приложение для iPhone. Будет ли UI_USER_INTERFACE_IDIOM правильно оцениваться на iPad, даже когда я нацеливаюсь на iPhone?

Ответы [ 3 ]

2 голосов
/ 02 июля 2010

UI_USER_INTERFACE_IDIOM не проверяет, является ли устройство iPhone или iPad.Он проверяет, находится ли пользовательский интерфейс в режиме iPhone (1x / 2x) или в режиме iPad.

Если приложение не настроено для работы с iPad, оно всегда вернетсяUIUserInterfaceIdiomPhone, потому что пользовательский интерфейс является приложением для iPhone.Это особенность.

И даже если приложение настроено только для iPhone, iPad должен без проблем запускать его, если вы используете методы, описанные в документации.

(Если вам нужны специфичные для iPad возможности, не проверяйте, действительно ли устройство является iPad. Вместо этого проверьте индивидуальные возможности.)

0 голосов
/ 08 апреля 2011

Как уже говорили люди, проверьте индивидуальные возможности.

Для совершения звонка сделайте это

// Only show the button if its is a device capable of making calls
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:"]]) {
    self.Button.hidden = NO;
} else {
    self.Button.hidden = YES;
}
0 голосов
/ 07 ноября 2010

Лучшее, что я могу предложить, это то, что на симуляторе iPad (3.2) при работе в режиме «iPhone»

NSLog(@"model : %@", [UIDevice currentDevice].model);

возвращает

model : iPhone Simulator

(как примечание: я создаю только для "iPhone" и, таким образом, работаю в режиме iPhone на iPad. Я должен предположить, что возвращенное имя "модели" зависит от этого)

...