Ada beberapa cara untuk memeriksa apakah suatu perangkat adalah iPad. Ini adalah cara favorit saya untuk memeriksa apakah perangkat itu sebenarnya sebuah iPad:
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
return YES; /* Device is iPad */
}
Cara saya menggunakannya
#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. */
}
Contoh lain
if ( [(NSString*)[UIDevice currentDevice].model hasPrefix:@"iPad"] ) {
return YES; /* Device is iPad */
}
#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if ( IPAD )
return YES;
Untuk solusi Swift, lihat jawaban ini: https://stackoverflow.com/a/27517536/2057171
UI_USER_INTERFACE_IDIOM()
setara dengan([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
. Anda mungkin akan lebih baik caching hasil suatu tempat:BOOL iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; … if (iPad) …
.if UIDevice.currentDevice().userInterfaceIdiom == .Pad
Di Swift Anda dapat menggunakan persamaan berikut untuk menentukan jenis perangkat pada aplikasi Universal:
Penggunaan kemudian akan menjadi seperti:
sumber
userInterfaceIdiom
'Tersedia di iOS 3.2 dan yang lebih baru.' jadi itu seharusnya bukan masalah..Phone
bukan.Pad
.Ini adalah bagian dari UIDevice pada iOS 3.2, misalnya:
sumber
Anda juga bisa menggunakan ini
sumber
UI_USER_INTERFACE_IDIOM()
hanya mengembalikan iPad jika aplikasi untuk iPad atau Universal. Jika ini merupakan aplikasi iPhone yang berjalan di iPad maka tidak akan. Jadi, Anda sebaiknya memeriksa model.sumber
Hati-hati: Jika aplikasi Anda hanya menargetkan perangkat iPhone, iPad yang menjalankan dengan mode yang kompatibel dengan iPhone akan kembali palsu untuk pernyataan di bawah ini:
Cara yang tepat untuk mendeteksi perangkat iPad fisik adalah:
sumber
Saya menemukan bahwa beberapa solusi tidak berfungsi untuk saya di Simulator dalam Xcode. Sebaliknya, ini berfungsi:
ObjC
Cepat
Juga di 'Contoh Lain' di Xcode model perangkat kembali sebagai 'iPad Simulator' sehingga tweak di atas harus menyelesaikannya.
sumber
hasSuffix:@"iPad"
alih-alihisEqualToString@"iPad"
... taruhan terbaik Anda adalah untuk Log model perangkat yang simulator kembali dan pergi dari sana ...Banyak cara untuk melakukannya di Swift :
Kami memeriksa model di bawah ini (kami hanya dapat melakukan pencarian case-sensitive di sini):
Kami memeriksa model di bawah ini (kami dapat melakukan pencarian case / sensitive peka di sini):
UIDevice.currentDevice().userInterfaceIdiom
di bawah ini hanya mengembalikan iPad jika aplikasi untuk iPad atau Universal. Jika itu adalah aplikasi iPhone yang dijalankan pada iPad maka tidak akan. Jadi, Anda sebaiknya memeriksa model. :Cuplikan di bawah ini tidak dapat dikompilasi jika kelas tidak mewarisi
UIViewController
, jika tidak, ia berfungsi dengan baik. ApapunUI_USER_INTERFACE_IDIOM()
hanya mengembalikan iPad jika aplikasi untuk iPad atau Universal. Jika itu adalah aplikasi iPhone yang dijalankan pada iPad maka tidak akan. Jadi, Anda sebaiknya memeriksa model. :sumber
*
*
sumber
Banyak Jawaban baik tetapi saya gunakan seperti ini di cepat 4
Buat Konstan
Gunakan seperti ini
Sunting: Seperti yang Disarankan - cukup buat ekstensi di UIDevice
sumber
App
struct ketika Anda dapat melakukan hal yang sama denganUIDevice
ekstensi?Anda dapat memeriksa rangeOfString untuk melihat kata iPad yang ada seperti ini.
sumber
["I am not an iPad" rangeOfString:@"iPad"].location != NSNotFound
mengembalikan true.Cara Swifty yang lain:
Pemakaian:
sumber
Di Swift 4.2 dan Xcode 10
Jika Anda ingin mendeteksi perangkat tertentu
sumber
Kenapa begitu rumit? Ini adalah bagaimana saya melakukannya ...
Swift 4:
Dengan cara ini Anda bisa mengatakannya
if iPad {}
sumber
Untuk versi terbaru iOS, cukup tambahkan
UITraitCollection
:dan kemudian
UIViewController
hanya memeriksa:sumber
sumber