Question

I have a view controller that is presented on pressing on one of the tabs in a tabBarController. In this view controller I initialise a UIImagePickerController in the viewDidLoad method:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;
}

The intention is to then display the UIImagePickerController at a later time when a button is pressed. For some reason though when the tab icon is pressed for this view controller, there is a 3-4 second hang while this viewDidLoad method is running. When I comment out the line _imagePicker = [[UIImagePickerController alloc] init] there is no hang time and the view controller loads immediately - as it should.

Does anyone know why allocating and initialising the UIImagePickerController is taking so long? If so, is there a way to speed it up other than running it as a background process? It seems like this is not normal behaviour.

I am using iOS7, and I am not calling viewWillAppear or viewDidAppear.

Was it helpful?

Solution

Turns out this is only a problem when in debug mode (when the iPhone is connected and running through Xcode). Once the same app is running without being connected to Xcode the lag doesn't occur.

OTHER TIPS

Try this iOS 12

//show a HUD or activityIndicator
dispatch_async(dispatch_queue_create("openPhotosCamera", NULL), ^{
   
    UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    
    dispatch_async(dispatch_get_main_queue(), ^{
        //hide HUD or activityIndicator
        [presenter presentViewController:mediaUI animated:YES completion:nil];
    });
});

**presenter is yourViewController / self

Try this.

    - (void)viewDidLoad{

    //Set imagePicker
    //-------------------------//
    _imagePicker = [[UIImagePickerController alloc] init];
    _imagePicker.delegate = self;
    _imagePicker.videoMaximumDuration = 10.0f;

[super viewDidLoad];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top