[ipad] Gli orientamenti supportati non hanno un orientamento comune con l'applicazione, e shouldAutorotate sta restituendo SI '


5 Answers

Dopo aver trascorso un sacco di tempo alla ricerca di un modo per evitare la sottoclasse e l'aggiunta di tonnellate di codice, ecco la mia soluzione con un codice di linea.

Crea una nuova categoria di UIImagePickerController e aggiungi

-(BOOL)shouldAutorotate{
    return NO;
}

È tutto gente!

Question

La mia app (iPad; iOS 6) è un'applicazione solo orizzontale, ma quando provo a utilizzare UIPopoverController per visualizzare la libreria fotografica, genera questo errore: Gli Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES. Ho provato a cambiare molto codice, ma non ho avuto fortuna.




- (BOOL)shouldAutorotate {
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

This removes the crash.



Ho riscontrato un problema simile durante la presentazione del selettore di immagini in un'app solo per paesaggio. Come suggerito dal Dr. Luiji, ho aggiunto la seguente categoria all'inizio del mio controller.

// This category (i.e. class extension) is a workaround to get the
// Image PickerController to appear in landscape mode.
@interface UIImagePickerController(Nonrotating)
- (BOOL)shouldAutorotate;
@end

@implementation UIImagePickerController(Nonrotating)

- (BOOL)shouldAutorotate {
  return NO;
}
@end

È più semplice aggiungere queste righe poco prima della @implementazione del file .m ViewController.




Ho avuto lo stesso problema e questa risposta https://.com/a/12523916 funziona per me. Mi chiedo se c'è una soluzione più elegante.

Il mio codice:

UIImagePickerController  *imagePickerController = [[NonRotatingUIImagePickerController alloc] init];
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

UIPopoverController  *popoverVC = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];    

[popoverVC presentPopoverFromRect:frame   // did you forget to call this method?
                           inView:view
         permittedArrowDirections:UIPopoverArrowDirectionAny
                         animated:YES];



Creare una categoria è davvero utile per risolvere questo bug. E non dimenticare di importare la tua categoria creata. Questo aggiungerà il metodo mancante a UIImagePickerController e su iOS 6 lo limiterà a funzionare in Portrait solo come afferma la documentazione btw.

Le altre soluzioni potrebbero aver funzionato. Ma con SDK per iOS 8.x compilato per la distribuzione su iOS 6.1, questa sembra la strada da percorrere.

Il file .h:

#import <UIKit/UIKit.h>

@interface UIImagePickerController (iOS6FIX)

- (BOOL) shouldAutorotate;
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation;

@end

Il file .m:

#import "UIImagePickerController+iOS6FIX.h"

@implementation UIImagePickerController (iOS6FIX)

- (BOOL) shouldAutorotate {
    return NO;
}

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

@end



Ho riscontrato questo problema di arresto anomalo durante la conversione di UIInterfaceOrientationPortrait in UIInterfaceOrientationMaskPortrait implicitamente come valore di ritorno.

Più sfondo del codice su UIPageViewControllerDelegate , solo FYI per tutti voi.

 -(UIInterfaceOrientationMask)pageViewControllerSupportedInterfaceOrientations:
(UIPageViewController *)pageViewController
{
    # return UIInterfaceOrientationPortrait;    # wrong
    return UIInterfaceOrientationMaskPortrait;  # correct
}



Related