มีหลายวิธีที่จะทำเช่นนั้นในSwift :
เราตรวจสอบรูปแบบด้านล่าง (เราสามารถทำการค้นหาด้วยตัวพิมพ์เล็กและตัวพิมพ์ได้ที่นี่):
class func isUserUsingAnIpad() -> Bool {
let deviceModel = UIDevice.currentDevice().model
let result: Bool = NSString(string: deviceModel).containsString("iPad")
return result
}
เราตรวจสอบโมเดลด้านล่าง (เราสามารถทำการค้นหาแบบตรงตามตัวพิมพ์เล็ก / ใหญ่) ได้ที่นี่:
class func isUserUsingAnIpad() -> Bool {
let deviceModel = UIDevice.currentDevice().model
let deviceModelNumberOfCharacters: Int = count(deviceModel)
if deviceModel.rangeOfString("iPad",
options: NSStringCompareOptions.LiteralSearch,
range: Range<String.Index>(start: deviceModel.startIndex,
end: advance(deviceModel.startIndex, deviceModelNumberOfCharacters)),
locale: nil) != nil {
return true
} else {
return false
}
}
UIDevice.currentDevice().userInterfaceIdiom
ด้านล่างจะแสดงผลเป็น iPad ก็ต่อเมื่อแอพนี้มีไว้สำหรับ iPad หรือ Universal หากเป็นแอพของ iPhone ที่ใช้งานบนไอแพดก็จะไม่เป็นเช่นนั้น ดังนั้นคุณควรตรวจสอบโมเดลแทน :
class func isUserUsingAnIpad() -> Bool {
if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
return true
} else {
return false
}
}
ตัวอย่างด้านล่างนี้ไม่ได้รวบรวมหากชั้นเรียนไม่ได้รับมรดกของUIViewController
มิฉะนั้นมันก็ใช้ได้ดี UI_USER_INTERFACE_IDIOM()
จะส่งคืน iPad โดยไม่คำนึงถึงว่าแอพนั้นมีไว้สำหรับ iPad หรือ Universal หากเป็นแอพของ iPhone ที่ใช้งานบนไอแพดก็จะไม่เป็นเช่นนั้น ดังนั้นคุณควรตรวจสอบโมเดลแทน :
class func isUserUsingAnIpad() -> Bool {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad) {
return true
} else {
return false
}
}
UI_USER_INTERFACE_IDIOM()
([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
คุณอาจจะดีกว่าในการแคชผลลัพธ์บางแห่ง:BOOL iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; … if (iPad) …
.