Alertas en Xamarin.Mac
En este artículo se explica cómo trabajar con alertas en una aplicación de Xamarin.Mac. Describe la creación y visualización de alertas desde código de C# y la respuesta a las interacciones del usuario.
Al trabajar con C# y .NET en una aplicación de Xamarin.Mac, tiene acceso a las mismas alertas que un desarrollador que trabaja en Objective-CObjective-C
Una alerta es un tipo especial de diálogo que aparece cuando se produce un problema grave (por ejemplo, un error) o como una advertencia (como preparar la eliminación de un archivo). Dado que una alerta es un cuadro de diálogo, también requiere una respuesta del usuario para poder cerrarla.
En este artículo, se tratarán los conceptos básicos de trabajar con alertas en una aplicación xamarin.mac.
Introducción a las alertas
Una alerta es un tipo especial de diálogo que aparece cuando se produce un problema grave (por ejemplo, un error) o como una advertencia (como preparar la eliminación de un archivo). Dado que las alertas interrumpen al usuario, ya que deben descartarse antes de que el usuario pueda continuar con su tarea, evite mostrar una alerta a menos que sea absolutamente necesaria.
Apple sugiere las siguientes directrices:
- No use una alerta simplemente para proporcionar información a los usuarios.
- No muestre una alerta para acciones comunes que se pueden deshacer. Incluso si esa situación puede provocar la pérdida de datos.
- Si una situación es merecedora de una alerta, evite usar cualquier otro elemento o método de interfaz de usuario para mostrarla.
- El icono Precaución debe usarse con moderación.
- Describa la situación de alerta de forma clara y concisa en el mensaje de alerta.
- El nombre del botón predeterminado debe corresponder a la acción que se describe en el mensaje de alerta.
Para más información, consulte la sección Alertas de las directrices de interfaz humana de OS X de Apple.
Anatomía de una alerta
Como se indicó anteriormente, las alertas deben mostrarse al usuario de la aplicación cuando se produce un problema grave o como una advertencia para una posible pérdida de datos (por ejemplo, cerrar un archivo sin guardar). En Xamarin.Mac, se crea una alerta en código de C#, por ejemplo:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Critical,
InformativeText = "We need to save the document here...",
MessageText = "Save Document",
};
alert.RunModal ();
El código anterior muestra una alerta con el icono de aplicaciones superpuesto en el icono de advertencia, un título, un mensaje de advertencia y un solo botón Aceptar:
Apple proporciona varias propiedades que se pueden usar para personalizar una alerta:
- AlertStyle define el tipo de una alerta como uno de los siguientes:
- Advertencia: se usa para advertir al usuario de un evento actual o inminente que no es crítico. Éste es el estilo predeterminado.
- Informativo: se usa para advertir al usuario sobre un evento actual o inminente. Actualmente, no hay ninguna diferencia visible entre una advertencia y una información.
- Crítico: se usa para advertir al usuario sobre las graves consecuencias de un evento inminente (como eliminar un archivo). Este tipo de alerta debe usarse con moderación.
- MessageText: este es el mensaje principal o el título de la alerta y debe definir rápidamente la situación para el usuario.
- InformativoTexto: este es el cuerpo de la alerta donde debe definir claramente la situación y presentar al usuario opciones que se pueden trabajar.
- Icono: permite que se muestre un icono personalizado al usuario.
- HelpAnchorShowsHelp: permite que la alerta esté vinculada a la aplicación HelpBook y mostrar ayuda para la alerta.
- Botones: de forma predeterminada, una alerta solo tiene el botón Aceptar, pero la colección Botones permite agregar más opciones según sea necesario.
- ShowsSuppressionButton: si muestra una casilla que el usuario puede usar para suprimir la alerta para las repeticiones posteriores del evento que la desencadenó.
- AccessoryView: permite adjuntar otra subvista a la alerta para proporcionar información adicional, como agregar un campo de texto para la entrada de datos. Si establece un nuevo AccessoryView o modifica uno existente, debe llamar al método para ajustar el diseño visible de la alerta.
Mostrar una alerta
Hay dos maneras diferentes de mostrar una alerta, Free-Floating o como una hoja. El código siguiente muestra una alerta como flotante libre:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.RunModal ();
Si se ejecuta este código, se muestra lo siguiente:
El código siguiente muestra la misma alerta que una hoja:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.BeginSheet (this);
Si se ejecuta este código, se mostrará lo siguiente:
Trabajar con botones de alerta
De forma predeterminada, una alerta muestra solo el botón Aceptar. Sin embargo, no está limitado a eso, puede crear botones adicionales anexándolos a la colección Botones. El código siguiente crea una alerta flotante libre con un botón Aceptar,Cancelary Quizás:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
var result = alert.RunModal ();
El primer botón agregado será el botón predeterminado que se activará si el usuario presiona la tecla Entrar. El valor devuelto será un entero que representa el botón que el usuario ha presionado. En nuestro caso, se devolverán los siguientes valores:
- Correcto: 1000.
- Cancelar: 1001.
- Quizás: 1002.
Si ejecutamos el código , se mostrará lo siguiente:
Este es el código de la misma alerta que una hoja:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.BeginSheetForResponse (this, (result) => {
Console.WriteLine ("Alert Result: {0}", result);
});
Si se ejecuta este código, se mostrará lo siguiente:
Importante
Nunca debe agregar más de tres botones a una alerta.
Mostrar el botón Suprimir
Si la propiedad de la alerta es , la alerta muestra una casilla que el usuario puede usar para suprimir la alerta para las repeticiones posteriores del evento que la ShowSuppressButtontrue desencadenó. El código siguiente muestra una alerta flotante libre con un botón suprimir:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
var result = alert.RunModal ();
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
Si el valor de es , el usuario ha activado la casilla Suprimir; de alert.SuppressionButton.StateNSCellStateValue.On lo contrario, no lo ha hecho.
Si se ejecuta el código, se mostrará lo siguiente:
Este es el código de la misma alerta que una hoja:
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.BeginSheetForResponse (this, (result) => {
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
});
Si se ejecuta este código, se mostrará lo siguiente:
Agregar una subvista personalizada
Las alertas tienen una propiedad que se puede usar para personalizar aún más la alerta y agregar elementos como un campo de texto para AccessoryView la entrada del usuario. AccessoryView El código siguiente crea una alerta flotante libre con un campo de entrada de texto agregado:
var input = new NSTextField (new CGRect (0, 0, 300, 20));
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.AccessoryView = input;
alert.Layout ();
var result = alert.RunModal ();
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
Las líneas clave aquí son var input = new NSTextField (new CGRect (0, 0, 300, 20)); las que crean un nuevo campo de var input = new NSTextField (new CGRect (0, 0, 300, 20)); que agregaremos a la alerta. alert.AccessoryView = input; que asocia el alert.AccessoryView = input; a la alerta y la llamada al método , que es necesario para cambiar el tamaño de la alerta para que quepa en la nueva Layout() subvista.
Si ejecutamos el código, se mostrará lo siguiente:
Esta es la misma alerta que una hoja:
var input = new NSTextField (new CGRect (0, 0, 300, 20));
var alert = new NSAlert () {
AlertStyle = NSAlertStyle.Informational,
InformativeText = "This is the body of the alert where you describe the situation and any actions to correct it.",
MessageText = "Alert Title",
};
alert.AddButton ("Ok");
alert.AddButton ("Cancel");
alert.AddButton ("Maybe");
alert.ShowsSuppressionButton = true;
alert.AccessoryView = input;
alert.Layout ();
alert.BeginSheetForResponse (this, (result) => {
Console.WriteLine ("Alert Result: {0}, Suppress: {1}", result, alert.SuppressionButton.State == NSCellStateValue.On);
});
Si ejecutamos este código, se mostrará lo siguiente:
Resumen
En este artículo se ha detallado cómo trabajar con alertas en una aplicación de Xamarin.Mac. Vimos los diferentes tipos y usos de alertas, cómo crear y personalizar alertas y cómo trabajar con alertas en código de C#.
Vínculos relacionados
- MacWindows (ejemplo)
- Hello, Mac
- Trabajar con Windows
- OS X Human Interface Guidelines (Directrices de interfaz humana de OS X)
- Introducción a Windows
- NSAlert








