2012-10-17 20 views
18

Co jest nie tak z tym kodem? Chcę móc sprawdzić, czy bieżące urządzenie, z którego korzysta użytkownik, jest iPadem, ale nadal daje mi błędy.Sprawdzanie, czy urządzenie to iPad

if (UIUserInterfaceIdiom == UIUserInterfaceIdiomPad) 
{ 
    //do stuff 
} 
+0

Prawdopodobnie chcesz oznaczyć to z czymś więcej niż tylko iPad. – epascarello

+0

Może dzwonisz za późno? Czy ładujesz swój XIB ręcznie? Pamiętam, że to robię i sukces. Ale myślę, że są lepsze rozwiązania. –

+0

Dzięki zrobię to! –

Odpowiedz

37

Można użyć

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
+6

Należy pamiętać, że wartość UIUserInterfaceIdiomPhone nie musi oznaczać, że znajdujesz się na urządzeniu iPhone - raczej, że idiom interfejsu jest zgodny z iPhonem. Możesz być na iPadzie, uruchamiając aplikację tylko dla iPhone'a w trybie 1x/2x. – magma

+2

W rzeczywistości jest to UI_USER_INTERFACE_IDIOM(). – rmaddy

+0

Masz rację dziękuję – Makleesh

8

trzeba cheack stan pogodowymi urządzenie iPhone/iPad

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
//do ur ipad logic 
}else 
{ 
//do ur iphone logic 
} 
3

Jeśli używasz Swift, użyj tego

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad) 
    { 
     // device is ipad 
    } 
    else 
    { 
     // device is iPhone 
    } 
3

W Swift można użyć:

if UIDevice.current.userInterfaceIdiom == .pad { 
1

/* The UI_USER_INTERFACE_IDIOM function() jest przewidziany do stosowania podczas wdrażania do wersji iOS mniej niż 3,2. Jeśli najwcześniejsza wersja iPhone'a/iOS, na którą będziesz wdrażać, jest w wersji 3.2 lub nowszej, możesz użyć - [UIDevice userInterfaceIdiom] bezpośrednio. */

Lepsze wykorzystanie UIDevice.current.userInterfaceIdiom chyba że są bardzo stare wsparcie iOS.

możliwych przypadków są jak poniżej:

public enum UIUserInterfaceIdiom : Int { 
    case unspecified 

    @available(iOS 3.2, *) 
    case phone // iPhone and iPod touch style UI 

    @available(iOS 3.2, *) 
    case pad // iPad style UI 

    @available(iOS 9.0, *) 
    case tv // Apple TV style UI 

    @available(iOS 9.0, *) 
    case carPlay // CarPlay style UI 
} 
Powiązane problemy