Tengo un UIBarButtonItem que abre una hoja de acción para ofrecer a los usuarios opciones sobre qué hacer. Todo funciona como se esperaba a menos que intente hacer clic en el botón "Cancelar". El objetivo del botón parece haberse movido hacia arriba desde donde debería estar. Solo puedo activarlo haciendo clic en algún lugar en el medio de los botones "Cancelar" y "Aceptar".
Probé hojas de acción en otras aplicaciones y funcionan bien, así que no es solo mi pulgar. La hoja de acción se abre en un UIViewController
- (void)showOpenOptions
{
UIActionSheet *sheet = [[UIActionSheet alloc]
initWithTitle:NSLocalizedString(@"Open link in external application?", @"Open in external application")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel")
destructiveButtonTitle:NSLocalizedString(@"Open Link", @"Open Link")
otherButtonTitles:nil];
[sheet showInView:self.view];
[sheet release];
}
ios
objective-c
iphone
cocoa-touch
uiactionsheet
rey nevan
fuente
fuente
Respuestas:
En lugar de pasar la vista del controlador de vista actual a la hoja de acciones, use el
showFromTabBar:
método deUIActionSheet
.La forma correcta
Esto le dará el área correcta para tocar:
The Wrong Way
Esto colocará el área que se puede tocar en el lugar equivocado (si está usando una barra de pestañas o una barra de herramientas):
Si está utilizando una barra de herramientas , utilice el
showFromToolbar:
método en su lugar. Necesitará una referencia a la barra de herramientas, probablemente un ivarMy Old Answer también funciona, pero es hacky:
Acabo de encontrar una posible respuesta:
http://openradar.appspot.com/6410780
Editar: funciona correctamente cuando cambio la vista para que sea la vista de la barra de pestañas
fuente
Encontré una respuesta aquí que funciona.
usando
[filterActionSheet showInView:[self.view window]]
:;Intenté algunas formas de llegar a mi barra de pestañas y la forma en que está configurada esta aplicación parece complicada ...
fuente
En su lugar use:
fuente
showInTabBar:
ashowFromTabBar:
. También tenga en cuenta que hay un método 'showFromToolbar:', dependiendo de los muebles de pantalla que tenga en la parte inferior de la pantalla. Creo que esta es una respuesta mejor que la respuesta aceptada.Aquí está la solución. Pruebe esto:
fuente
Creo que una combinación de tres de las respuestas es la forma correcta de manejar esto:
es decir, use showFromTabBar (por eso existe) y no necesita parentViewController como señaló Nathan (de hecho, self.parentViewController.tabBarController.tabBar devuelve nil para mí.
fuente
FYI: tuvo el mismo problema con la hoja de acciones de UIDocumentInteractionController al pisar la barra de pestañas. Usé lo siguiente para arreglar.
fuente
escribir código simplificado
esto funciona bien
fuente