iphone - restricciones - La hoja de acción no muestra el botón Cancelar en el iPad
restricciones ios 12 (6)
Esto es parte del diseño de la interfaz de usuario y las pautas . En "Hoja de acción" dicen:
No incluya un botón Cancelar, porque las personas pueden tocar fuera del popover para cerrar la hoja de acción sin seleccionar una de las otras alternativas.
Parece que el SDK oculta el botón para usted a propósito . No estoy seguro de que haya una solución, pero tal vez podrías agregar tu propio botón y configurar el cancelButtonIndex
para que coincida. O podría cambiar a UIAlertView
.
En el iphone, este código muestra el botón cancelar:
- (IBAction)buttonPressed
{
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Are you sure?"
delegate:self
cancelButtonTitle:@"No way!"
destructiveButtonTitle:@"Yes, I''m sure!"
otherButtonTitles:nil];
[actionSheet showInView:self.view];
[actionSheet release];
}
Pero en el iPad, solo se muestra el botón destructivo.
¿Cuál es el problema?
Pude resolver esto estableciendo actionSheetStyle:
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
UIActionSheetStyleBlackTranslucent también funciona. Estoy mostrando la hoja de acción de un controlador de vista modal que supongo que no es técnicamente un "controlador de popover" como dicen las directrices, pero no ver un botón Cancelar en la hoja de acción no se ve bien cuando aparece en la parte superior de la vista modal. Todo lo que el usuario ve es un temible botón rojo sin una alternativa visible.
Tal vez podría cambiar el controlador de vista modal a un controlador de popover, pero entonces no sería modal lo que necesita ser.
--Actualizar--
Bueno, fue divertido mientras duró, pero esto ya no funciona en iOS 4.2.
Cambié a usar UIAlertView en lugar de UIActionSheet.
Ya no recibo un buen botón rojo, pero hace el trabajo.
Tuve el mismo problema cuando traté de mostrar ActionSheet en la Vista que estaba bajo otra vista modal, por ejemplo, la vista era invisible. Aunque la vista no era nula, parece muy profunda en el marco, lo que significa cuando no se muestra.
UIModalPresentationStyle modalPresentationStyle
el problema estableciendo una propiedad UIModalPresentationStyle modalPresentationStyle
diferente para que la vista se volviera visible.
view.modalPresentationStyle = UIModalPresentationFormSheet;
Parece que en iOS 4.2.1 puede agregar manualmente su propio botón Cancelar como un botón normal:
[actionSheet addButtonWithTitle:@"Cancel"];
Y luego establecer:
actionSheet.cancelButtonIndex = <your index>;
No obtendrá el botón rojo de cancelación, pero obtendrá uno azul o negro según su configuración de UIActionSheetStyle
. En cualquier caso, es bastante claramente distinguible de los botones normales y cancela correctamente.
Tenga en cuenta que en mi caso estoy mostrando una hoja de acción desde un controlador de popover, sus resultados pueden variar en otros escenarios.
En iOS 5, esto funcionó para mí.
- (void)manualAddModel
{
UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle: @"Select Equipment Type"
delegate: self
cancelButtonTitle: @"Cancel"
destructiveButtonTitle: nil
otherButtonTitles: @"Add Boiler", @"Add Furnace", nil];
popupQuery.actionSheetStyle = UIActionSheetStyleDefault;
[popupQuery addButtonWithTitle:@"Cancel"];
[popupQuery showInView:self.view];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
NSLog(@"Add Boiler");
}
else if (buttonIndex == 1)
{
NSLog(@"Add Furnace");
}
else if (buttonIndex == 2)
{
NSLog(@"Cancel Button Clicked");
}
}
Normalmente, tocar fuera de la hoja de acciones servirá para el mismo propósito en iPad.
De acuerdo con el estándar de iOS, el botón Cancelar no se muestra en UIActionSheet cuando se muestra en el iPad, ya que UIActionSheet se puede cancelar (Ocultar) simplemente tocando cualquier parte fuera de la región de la hoja de acción. En el caso de iPhone, UIActionSheet contendrá el botón Cancelar.
Consulte este enlace para obtener más información Botón Cancelar UIActionSheet en iPad