ios ios7 ios8 uiactionsheet

UIActionSheet no se muestra en iOS 8



ios7 ios8 (5)

Puedo mostrar el actionSheet en iOS 7 pero no puedo mostrarlo en el entorno de iOS 8. ¿Hay alguna manera de rastrear?

UIActionSheet *_actionSheet = [[UIActionSheet alloc] initWithTitle:@"Account" delegate:self cancelButtonTitle:@"Close" destructiveButtonTitle:@"Log Out" otherButtonTitles:@"View Account", nil]; [_actionSheet showInView:appDel.window];


UIActionSheet está en desuso en iOS 8.

Para crear y administrar hojas de acción en iOS 8, debe usar UIAlertController con un estilo preferido de UIAlertControllerStyleActionSheet.

Consulte este ejemplo .


Es claramente una regresión en iOS 8. He archivado un rdar, por favor hágalo también.

Mientras tanto, puedes arreglarlo con una categoría o una subclase en la que verifique si la vista es una ventana, y si es así, toma la vista de rootViewController en esa ventana y úsala en su lugar. Funcionará de esa manera.


Tuve problemas con las hojas de acción cuando salió iOS 8. Es probable que sea un problema con la vista que está presentando. ¿Puede mostrarlo en una vista real en lugar de la ventana? Experimentaría allí primero y, en el peor de los casos, envolvería el método show en algo específico para iOS 7 y 8. Empecé a usar PSTAlertController para administrar mis alertas y hojas de acción. Es compatible con UIAlertView, UIActionSheet y UIAlertController. Resolverá cuál usar, y le dará acceso a acciones de bloqueo para sus botones, mientras que todavía admite iOS 7 y 8. Vale la pena echarle un vistazo.


UIAlertController * alert= [UIAlertController alertControllerWithTitle:@"Info" message:@"You are using UIAlertController" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [alert dismissViewControllerAnimated:YES completion:nil]; }]; UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [alert dismissViewControllerAnimated:YES completion:nil]; }]; [alert addAction:ok]; [alert addAction:cancel]; [self presentViewController:alert animated:YES completion:nil];


Si alguien más ve este problema, el problema está causado por iOS 8 y 9 que muestran su hoja de acción detrás del teclado en pantalla, por lo que no puede verlo. Usted acaba de ver que el resto de la pantalla se oscurece. Genio.

La solución simple es agregar una línea de código antes de mostrar su UIActionSheet :

[self.view endEditing:true];

Esto descarta el teclado en pantalla, lo que hace que su hermosa hoja de acción sea visible nuevamente.