Domanda

Ho un controller di visualizzazione che viene presentato su una pressione su una delle schede in un tabbarcontroller. In questo controller di visualizzazione Inizializzare un uiIMagePickerController nel metodo ViewDidload:

- (void)viewDidLoad
{
    [super viewDidLoad];

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

L'intenzione è quindi visualizzare l'UiimagePickerController in un secondo momento in cui viene premuto un pulsante. Per qualche motivo, però, quando l'icona della scheda viene premuta per questo controller di visualizzazione, è presente un impiccagione di 3-4 secondi mentre questo metodo ViewDidload è in esecuzione. Quando commenta la riga _imagepicker = [[UiImagePickerController alloc] init] non c'è tempo di appendiabiti e il controller di visualizzazione si carica immediatamente - come dovrebbe.

Qualcuno sa perché allocare e inizializzare l'uIimagePickerController sta impiegando così tanto tempo? In tal caso, c'è un modo per accelerarlo oltre a eseguirlo come processo di fondo? Sembra che questo non sia un comportamento normale.

Sto usando iOS7 e non sto chiamando ViewWillaPappear o ViewDidappear.

È stato utile?

Soluzione

Si scopre che questo è solo un problema in modalità debug (quando l'iPhone è connesso ed esegue tramite Xcode). Una volta che la stessa app è in esecuzione senza essere collegata a Xcode, il ritardo non si verifica.

Altri suggerimenti

Prova questo 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];
    });
});

** Il presentatore è il tuo ViewController / self

Prova questo.

    - (void)viewDidLoad{

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

[super viewDidLoad];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top