iOS 7 中的应用程序崩溃

Posted

技术标签:

【中文标题】iOS 7 中的应用程序崩溃【英文标题】:App Crashing in iOS 7 【发布时间】:2013-10-21 06:20:21 【问题描述】:

当我在 iPhone 上使用 UIImagePicker 时,应用程序崩溃了,但仅限于 ios 7。 我使用以下代码行

    picker = [[UIImagePickerController alloc] init];

    picker.delegate = self;
    picker.allowsEditing = YES;

    if( [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] || [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear])
    
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
     else 
        //[self showAlertViewWithTitle:@"Sorry" message:@"Your Device Don't Have Camera"];
    

    [self presentViewController:picker animated:YES completion:nil];


该应用在 iOS 6 上运行,而不是在 iOS 7 上运行。 我是这个网站的新手,请帮忙。

【问题讨论】:

你能发布你得到的异常吗? 说清楚。在iOS 7 下运行并在iOS 6 下运行时崩溃?是的,最好的方法是也从控制台发布错误消息等。 原因:'支持的方向与应用程序没有共同的方向,并且 shouldAutorotate 正在返回 YES' 然后在您的 ViewController 中将 shouldAutorotate 更改为 NO 而不是 YES。 试过但没有运气。应用程序在 iOS6 中运行,而不是在 iOS 7 中。 【参考方案1】:

UIImagePickerController 仅在 iPhone 中以 Potratin 模式呈现。我在您的代码中发现了另一个错误,您正在使用 picker.sourceType = UIImagePickerControllerSourceTypePhotoLibraryisCameraDeviceAvailable 错误:-

您应该编写如下代码:-

if( [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] || [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear])
    
       picker.sourceType = UIImagePickerControllerSourceTypeCamera;
                 [self presentViewController:picker animated:YES completion:nil];
     else 
         picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
                 [self presentViewController:picker animated:YES completion:nil];       
    

在您的 ViewController shouldAutorotate 中更改为 NO 而不是 YES

【讨论】:

欢迎接受这个答案。似乎这个答案解决了你的问题。 :)【参考方案2】:

在你的 ViewController.m 文件中,在开始 @implementation 之前编写以下代码

@interface NonRotatingUIImagePickerController : UIImagePickerController

@end

@implementation NonRotatingUIImagePickerController

- (BOOL)shouldAutorotate

    return NO;


@end

在你想创建Image Picker对象的地方写下如下代码

UIImagePickerController* picker = [[NonRotatingUIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self; 
    [self presentModalViewController:picker animated:YES];

【讨论】:

如果您有任何问题,请告诉我。 PopOverController 可以在 iPhone 上使用吗? @Pravin,哦,对不起......等一下......我正在更新我的答案。 已解决,但在 iphone 中弹出窗口以纵向模式打开..但我需要 ladscape 模式。 imager Picker 从不支持横向模式。【参考方案3】:

好的,如果是这种情况,请尝试this out...

将此添加到您的 ViewController

- (NSUInteger) supportedInterfaceOrientations

     //Because your app is only landscape, your view controller for the view in your
     // popover needs to support only landscape
     return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;

【讨论】:

我认为现在已弃用。只有导航控制器应该有supportedInterfaceOrientations 方法

以上是关于iOS 7 中的应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 中的 CoreData 迁移

JSONKit 崩溃:iPad 视网膜 64 位设备模拟器中的 iOS 7 Xcode 5.1

UIGraphics 在 iOS 7 上崩溃

UI 图像选择器在 ios 7/iphone 4s 上崩溃

iOS 7 - UICollectionElementKindSectionHeader 使应用程序崩溃('UICollectionView 数据源未设置')

更改日历隐私时 iOS 7 应用程序崩溃