Ho un'applicazione che viene configurato tramite il file plist per sostenere ritratto, paesaggio a sinistra, e gli orientamenti del paesaggio di destra (cioè UISupportedInterfaceOrientations è impostato su UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, e UIInterfaceOrientationLandscapeRight). Ma ho limitato gli orientamenti supportati al solo ritratto all'interno di un controller di visualizzazione. Se presento un UIActionSheet sulla vista del controller della vista e quindi ruoto il dispositivo, UIActionSheet ruota verso il nuovo orientamento. Questo succede solo su dispositivi con iOS 8 (GM Seed).iOS 8 UIActionSheet ignora vista supportedInterfaceOrientations controller e shouldAutorotate
Desidero che UIActionSheet segua le regole del controller della vista contenente e non ruoti. Pensieri?
non voglio che questo accada: screenshot http://oi58.tinypic.com/20tgto2.jpg
UIViewController codice di esempio:
- (IBAction)onTouch:(id)sender
{
UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle:@"hi"
delegate:nil
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Open", nil];
[actionSheet showInView:self.view];
}
#pragma mark - Rotation methods
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
Certo, c'è un nuovo modo "preferito", ma perché cambiare/rompere le vecchie funzionalità di lavoro solo perché viene introdotto un nuovo modo? Questo nuovo modo è l'unico modo per ottenere il comportamento originale? – Bushrod
No, perché gli utenti iOS7 devono ancora gestire i vecchi avvisi/fogli. Chiaramente un bug che ha bisogno di essere risolto. – Morrowless
Su iOS7 il vecchio UIActionSheet non presenta il problema di rotazione. Usa UIActionSheet su iOS7 e precedenti. Utilizzare UIAlertController su iOS8 e versioni successive. Cerca NSClassFromString (@ "UIAlertController") per determinare quale codice utilizzare. – Awesomeness