Istnieje wiele sposobów sprawdzenia, czy urządzeniem jest iPad. To mój ulubiony sposób sprawdzenia, czy urządzenie to tak naprawdę iPad:
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
return YES; /* Device is iPad */
}
Sposób w jaki go używam
#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. */
}
Inne przykłady
if ( [(NSString*)[UIDevice currentDevice].model hasPrefix:@"iPad"] ) {
return YES; /* Device is iPad */
}
#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if ( IPAD )
return YES;
Aby uzyskać szybkie rozwiązanie, zobacz tę odpowiedź: https://stackoverflow.com/a/27517536/2057171
UI_USER_INTERFACE_IDIOM()
jest równoważne z([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
. Może być lepiej buforowanie gdzieś wynik:BOOL iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; … if (iPad) …
.if UIDevice.currentDevice().userInterfaceIdiom == .Pad
W Swift możesz użyć następujących równości, aby określić rodzaj urządzenia w aplikacjach Universal:
Użycie byłoby wtedy takie jak:
źródło
userInterfaceIdiom
„Dostępny w iOS 3.2 i nowszych”. więc to nie powinien być problem..Phone
zamiast tego powróci.Pad
.Jest to część UIDevice od iOS 3.2, np .:
źródło
Możesz także tego użyć
źródło
UI_USER_INTERFACE_IDIOM()
zwraca iPada tylko wtedy, gdy aplikacja jest przeznaczona na iPada lub Universal. Jeśli jest to aplikacja na iPhone'a działająca na iPadzie, nie będzie. Zamiast tego powinieneś sprawdzić model.źródło
Zachowaj ostrożność: jeśli Twoja aplikacja jest kierowana tylko na urządzenia iPhone, iPad działający w trybie zgodnym z iPhone'em zwróci wartość false dla poniższego stwierdzenia:
Właściwy sposób na wykrycie fizycznego urządzenia iPad to:
źródło
Odkryłem, że niektóre rozwiązania nie działały dla mnie w Symulatorze w Xcode. Zamiast tego działa:
ObjC
Szybki
Również w „Innych przykładach” w Xcode model urządzenia powraca jako „Symulator iPada”, więc powyższa poprawka powinna to rozwiązać.
źródło
hasSuffix:@"iPad"
zamiastisEqualToString@"iPad"
… najlepiej jest zalogować model urządzenia, który symulator zwraca i odchodzi stamtąd ...Wiele sposobów, aby to zrobić w Swift :
Sprawdzamy model poniżej (tutaj możemy przeprowadzić wyszukiwanie z rozróżnianiem wielkości liter):
Sprawdzamy model poniżej (tutaj możemy przeprowadzić wyszukiwanie z rozróżnianiem wielkości liter / niewrażliwości):
UIDevice.currentDevice().userInterfaceIdiom
poniżej zwraca iPada tylko wtedy, gdy aplikacja jest na iPada lub Universal. Jeśli jest to aplikacja na iPhone'a uruchomiona na iPadzie, nie będzie. Zamiast tego powinieneś sprawdzić model. :Poniższy fragment kodu nie kompiluje się, jeśli klasa nie dziedziczy pliku
UIViewController
, w przeciwnym razie działa dobrze. Niezależnie od tegoUI_USER_INTERFACE_IDIOM()
zwraca iPada tylko wtedy, gdy aplikacja jest na iPada lub Universal. Jeśli jest to aplikacja na iPhone'a uruchomiona na iPadzie, nie będzie. Zamiast tego powinieneś sprawdzić model. :źródło
*
*
źródło
Wiele odpowiedzi jest dobrych, ale używam tego w swift 4
Utwórz stałą
Użyj w ten sposób
Edycja: zgodnie z sugestią Cœur po prostu utwórz rozszerzenie na UIDevice
źródło
App
głowę strukturą, skoro możesz zrobić to samo zUIDevice
rozszerzeniem?Możesz sprawdzić rangeOfString, aby zobaczyć, że słowo iPad istnieje w ten sposób.
źródło
["I am not an iPad" rangeOfString:@"iPad"].location != NSNotFound
zwraca true.Jeszcze inny Swifty sposób:
Stosowanie:
źródło
W Swift 4.2 i Xcode 10
Jeśli chcesz wykryć określone urządzenie
źródło
Dlaczego tak skomplikowane? Tak to robię ...
Swift 4:
W ten sposób możesz po prostu powiedzieć
if iPad {}
źródło
W najnowszych wersjach iOS wystarczy dodać
UITraitCollection
:a następnie
UIViewController
wystarczy sprawdzić:źródło
źródło