Существует немало способов проверить, является ли устройство iPad. Это мой любимый способ проверить, является ли устройство на самом деле iPad:
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
return YES; /* Device is iPad */
}
Как я использую это
#define IDIOM UI_USER_INTERFACE_IDIOM()
#define IPAD UIUserInterfaceIdiomPad
if ( IDIOM == IPAD ) {
/* do something specifically for iPad. */
} else {
/* do something specifically for iPhone or iPod touch. */
}
Другие примеры
if ( [(NSString*)[UIDevice currentDevice].model hasPrefix:@"iPad"] ) {
return YES; /* Device is iPad */
}
#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if ( IPAD )
return YES;
Для решения Swift см. Этот ответ: https://stackoverflow.com/a/27517536/2057171
UI_USER_INTERFACE_IDIOM()
эквивалентно([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
. Вы могли бы быть лучше кэшировать результат где - то:BOOL iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; … if (iPad) …
.if UIDevice.currentDevice().userInterfaceIdiom == .Pad
В Swift вы можете использовать следующие равенства для определения типа устройства в универсальных приложениях:
Использование тогда будет примерно таким:
источник
userInterfaceIdiom
: «Доступно в iOS 3.2 и более поздних версиях». так что это не должно быть проблемой..Phone
вместо.Pad
.Это часть UIDevice с iOS 3.2, например:
источник
Вы также можете использовать это
источник
UI_USER_INTERFACE_IDIOM()
возвращает iPad только в том случае, если приложение предназначено для iPad или Universal. Если это приложение для iPhone работает на iPad, то это не так. Поэтому вы должны вместо этого проверить модель.источник
Будьте внимательны: если ваше приложение предназначено только для устройства iPhone, iPad, работающий в режиме, совместимом с iphone, вернет false для следующего утверждения:
Правильный способ обнаружения физического устройства iPad:
источник
Я обнаружил, что какое-то решение не работает для меня в симуляторе в Xcode. Вместо этого это работает:
ObjC
стриж
Также в «Других примерах» в Xcode модель устройства возвращается как «iPad Simulator», так что вышеприведенная настройка должна разобраться с этим.
источник
hasSuffix:@"iPad"
вместоisEqualToString@"iPad"
... ваш лучший выбор - зарегистрировать модель устройства, которую симулятор возвращает и уходит оттуда ...Много способов сделать это в Swift :
Мы проверим модель ниже (мы можем только выполнить поиск с учетом регистра здесь):
Мы проверяем модель ниже (мы можем выполнить поиск с учетом регистра / без учета здесь):
UIDevice.currentDevice().userInterfaceIdiom
ниже возвращает только iPad, если приложение для iPad или Universal. Если это приложение для iPhone, запущенное на iPad, то оно не будет. Поэтому вы должны вместо этого проверить модель. :Этот фрагмент ниже не компилируется, если класс не наследует
UIViewController
, иначе он работает просто отлично. Независимо от того,UI_USER_INTERFACE_IDIOM()
только возвращает iPad, если приложение для iPad или Universal. Если это приложение для iPhone, запущенное на iPad, то оно не будет. Поэтому вы должны вместо этого проверить модель. :источник
*
*
источник
Многие ответы хороши, но я использую это в Swift 4
Создать константу
Используйте как это
Изменить: как предложено Cœur просто создать расширение на UIDevice
источник
App
структуре, когда вы можете сделать то же самое сUIDevice
расширением?Вы можете проверить rangeOfString, чтобы увидеть, что слово iPad существует следующим образом.
источник
["I am not an iPad" rangeOfString:@"iPad"].location != NSNotFound
возвращает истину.Еще один Swifty путь:
Использование:
источник
В Swift 4.2 и Xcode 10
Если вы хотите обнаружить конкретное устройство
источник
Почему так сложно? Вот как я это делаю ...
Свифт 4:
Таким образом, вы можете просто сказать,
if iPad {}
источник
Для последних версий iOS просто добавьте
UITraitCollection
:а затем в течение
UIViewController
просто проверить:источник
источник