问题描述
|
UIImagePicker在iPhone和iPad上的显示方式必须不同。在iPad上,它抛出一个异常:
*由于未捕获的异常而终止应用程序
\'NSinvalidargumentexception \',原因:
\'在iPad上,UIImagePickerController必须
通过UIPopoverController呈现
因此,我必须将代码添加到特定于iPad的通用应用程序中。有什么安全的方法可以使应用程序在没有UIPopoverController的设备上不会崩溃?
例:
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[popover presentPopoverFromrect:CGRectMake(100,100.0,0.0,0.0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
此外,如果需要UIPopoverController,则需要一个实例变量来保存它。我该如何处理?
解决方法
您可以通过这样做检查类是否存在。
Class popoverClass = (NSClassFromString(@\"UIPopoverController\"));
if (popoverClass != nil) {
// you\'re on ipad
} else {
// you\'re on iphone/ipod touch
}
,这个问题看起来像是一个重复:
为iPad编译时是否设置了特定的Xcode编译器标志?
,您可以快速检查使用哪种设备:
[[UIDevice currentDevice] model];