objective c - Usando UIActionSheet en iPad
objective-c uialertview (1)
La documentación de Apple para el UIActionSheet me está causando confusión. En primer lugar, en las Pautas de interfaz humana del iPad, dice:
Para obtener más información sobre el uso de una hoja de acción en su código, consulte "Uso de Popovers para mostrar contenido" en la Guía de programación del iPad.
Pero luego, en la sección "Uso de Popovers para mostrar contenido", ¡no se menciona en absoluto las Hojas de acción! ¿Me estoy perdiendo de algo?
Mi pregunta principal es esta: en el iPad, ¿cuál es la diferencia entre un UIPopoverController y una UIActionSheet? Si un UIActionSheet se presenta automáticamente dentro de un UIPopoverController, ¿hay alguna razón para usar UIActionSheet? Veo cómo su creación delegada y automática de botones hace menos líneas de código, pero desde un punto de vista de usabilidad, ¿hay alguna diferencia?
Además, mostrar mi actionSheet con animación no funciona en absoluto. Se ve y actúa exactamente como un ActionSheet presentado sin animación (que es exactamente igual que si solo estuviera usando un UIPopoverController y no haya ActionSheet). Aquí está mi código:
UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"An unsaved property already exists. You must assign a name to this property before creating a new property. Would you like to:"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:@"Overwrite"
otherButtonTitles:@"Open unsaved property", nil];
[action showFromRect:CGRectMake(0, 0, 200, 200) inView:self.mainSplitViewController.view animated:NO];
¿Cómo obtendría una ActionSheet que se parece a la muestra ActionSheet animada en la documentación de Apple (desde la aplicación de mapas, donde agrega una ubicación a un contacto)?
Puede que termine usando una alerta para esto en lugar de una ventana emergente o una hoja de acción, pero aún así sería útil entender esto.
¡Gracias!
En primer lugar, UIActionSheet
existía antes de que UIPopoverController
y UIPopoverController
no estén disponibles en iPhone, por lo que es útil para la compatibilidad con versiones anteriores y las aplicaciones universales.
Además, una UIActionSheet
no se presenta necesariamente en una UIBarButtonItem
UIToolbar
, específicamente, si la muestra desde un UIBarButtonItem
o UIToolbar
que ya está dentro de una UIBarButtonItem
UIToolbar
. Luego se presenta de una manera similar a la del iPhone (deslizándose desde la parte inferior del controlador de vista). De acuerdo con el HIG, no debe presentar múltiples ventanas emergentes al mismo tiempo (una vez tuve una aplicación rechazada por eso), por lo que en los casos en que un controlador de vista puede estar dentro de una ventana emergente (como en una aplicación de vista dividida estándar), puede desea utilizar hojas de acción, si es posible. Por supuesto, hay muchos casos en los que no puede reemplazar una ventana emergente por una hoja de acción, porque una hoja de acción solo muestra una lista de botones y un título, mientras que una ventana emergente puede mostrar cualquier controlador de vista.
Creo que el parámetro animated
solo tiene un efecto cuando una hoja de acción se presenta de la manera "clásica" (como en el iPhone).