ios ios7 uiactionsheet

ios - UIActionSheet está recortado por su supervista, no tengo una barra de herramientas ni tabbar



ios7 (3)

Mi aplicación usa un UINavigationController, pero no muestro la barra de herramientas porque toda mi navegación está controlada por los controles del juego.

No tengo una barra de pestañas, porque no estoy usando un TabBarController.

Mi aplicación de juego es solo paisaje.

Así es como creé y presenté el UIActionSheet anteriormente:

UIActionSheet *quitGameSheet = [[UIActionSheet alloc] initWithTitle:@"Quit your game?" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Yes, quit game" otherButtonTitles:nil]; [quitGameSheet showInView:self.view];

Sin embargo, UIActionSheet está fuera de pantalla y recibo este error:

Presenting action sheet clipped by its superview. Some controls might not respond to touches. On iPhone try -[UIActionSheet showFromTabBar:] or -[UIActionSheet showFromToolbar:] instead of -[UIActionSheet showInView:].

Sin embargo, no tengo una barra de herramientas y no tengo una barra de pestañas.

He intentado varias otras respuestas de Stack Overflow, ninguna de las cuales funciona para mí:

Problema con UIActionSheet

Intenté presentarlo desde self.navigationController.view, desde self.parentViewController.view, desde un CGRect que creé que estaba en la parte inferior de la vista, desde self.view.bounds porque estaba desesperado ... nada de eso funciona para yo.

Funciona en iOS 6, pero no funciona en iOS 7. Aquí hay un par de capturas de pantalla que funcionan en iOS 6 y fallan en iOS 7.

¿Alguna ayuda?

ACTUALIZACIÓN 1 ---

Aquí hay una jerarquía de vista según lo solicitado:

<UIView: 0xc480380; frame = (0 0; 568 320); autoresize = RM+BM; layer = <CALayer: 0xc4803e0>> | <UIImageView: 0xc480410; frame = (0 0; 568 320); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0xc4804a0>> | <UIButton: 0xc47b370; frame = (203 107; 159 37); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc47a730>> | | <UIImageView: 0xc475150; frame = (0 0; 159 37); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc4751e0>> | <UIButton: 0xc478a00; frame = (203 152; 159 37); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc477dd0>> | | <UIImageView: 0xc475030; frame = (0 0; 159 37); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc4750c0>> | <UISwitch: 0xc47dcc0; frame = (313 65; 51 31); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc47d180>> | | <_UISwitchInternalViewNeueStyle1: 0xc47e040; frame = (0 0; 51 31); gestureRecognizers = <NSArray: 0xc47ffa0>; layer = <CALayer: 0xc47e140>> | | | <UIView: 0xc47e4e0; frame = (35.5 0; 15.5 31); clipsToBounds = YES; layer = <CALayer: 0xc47e540>> | | | | <UIView: 0xc47e330; frame = (-35.5 0; 51 31); layer = <CALayer: 0xc47e390>> | | | <UIView: 0xc47e450; frame = (0 0; 35.5 31); clipsToBounds = YES; layer = <CALayer: 0xc47e4b0>> | | | | <UIView: 0xc47e3c0; frame = (0 0; 51 31); layer = <CALayer: 0xc47e420>> | | | <UIView: 0xc47f750; frame = (0 0; 51 31); layer = <CALayer: 0xc47f7b0>> | | | | <UIImageView: 0xc47f480; frame = (39 16; 0 0); alpha = 0; userInteractionEnabled = NO; layer = <CALayer: 0xc47f660>> | | | | <UIImageView: 0xc47f690; frame = (12 16; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0xc47f720>> | | | <UIImageView: 0xc47e680; frame = (7 -6; 57 43.5); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc47f2f0>> | <UILabel: 0xc480610; frame = (173 63; 96 29); text = ''Sounds:''; clipsToBounds = YES; opaque = NO; autoresize = LM+RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xc480540>> | <UIButton: 0xc473a20; frame = (203 197; 159 37); opaque = NO; autoresize = LM+RM+BM; layer = <CALayer: 0xc473590>> | | <UIImageView: 0xc474f30; frame = (0 0; 159 37); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xc474fc0>>


Recientemente resolví un problema similar en iOS 7 (aunque no incluía una hoja de acción) al presentarlo en la ventana principal; en tu caso, sería algo así como:

[quitGameSheet showInView:[UIApplication sharedApplication].keyWindow];

Espero que funcione en tu caso también.


Tenía lo que parecía ser un problema sin relación en la misma aplicación, en el que algunos de los botones en el lado izquierdo de la pantalla no se podían tocar.

No se puede tocar los botones en el lado izquierdo de iPhone de 4 "

Mientras investigaba descubrí que mi UIWindow era 320x480. El problema estaba en mi MainWindow.xib. Xcode creó este xib para mí, pero probablemente fue Xcode 3 y fue hace varios años. Decidí revisar la configuración y noté la opción de "Pantalla completa en el lanzamiento". Busqué esa opción en los documentos y había una nota que decía que siempre debería estar activada para que el tamaño de la ventana de la ventana sea el adecuado. Esto nunca fue un problema cuando solo había un tamaño de iPhone, pero se convirtió en un problema con la introducción del iPhone de 4 ".

Entonces, revisé esa caja, y relancé y violé, tanto este como el otro problema fueron resueltos porque la ventana UI adjunta era del tamaño correcto.


[sheet showInView:[UIApplication sharedApplication].keyWindow]; sheet.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height- sheet.frame.size.height, [UIScreen mainScreen].bounds.size.width, sheet.frame.size.height);

Enlace: Issue with UIActionSheet Form: user352537