Upozornění v Xamarin.Mac

Tento článek popisuje práci s upozorněními v aplikaci Xamarin.Mac. Popisuje vytváření a zobrazování upozornění z kódu jazyka C# a reakce na interakce uživatelů.

Při práci s C# a .NET v aplikaci Xamarin.Mac máte přístup ke stejným upozorněním, ve kterých vývojář pracuje Objective-C a Xcode dělá.

Výstraha je speciální typ dialogového okna, které se zobrazí, když dojde k závažnému problému (například k chybě) nebo jako upozornění (například příprava na odstranění souboru). Vzhledem k tomu, že výstraha je dialogové okno, vyžaduje také odpověď uživatele, aby bylo možné ji zavřít.

An example alert

V tomto článku se podíváme na základy práce s upozorněními v aplikaci Xamarin.Mac.

Úvod k upozorněním

Výstraha je speciální typ dialogového okna, které se zobrazí, když dojde k závažnému problému (například k chybě) nebo jako upozornění (například příprava na odstranění souboru). Vzhledem k tomu, že upozornění uživatele ruší, protože musí být zavření, než může uživatel pokračovat ve svém úkolu, vyhněte se zobrazení výstrahy, pokud to není nezbytně nutné.

Apple navrhuje následující pokyny:

  • Nepoužívejte upozornění pouze k poskytnutí informací uživatelům.
  • Nezobrazovat upozornění pro běžné a neschytitelné akce. I když by tato situace mohla způsobit ztrátu dat.
  • Pokud je situace hodná výstrahy, vyhněte se použití jakéhokoli jiného prvku uživatelského rozhraní nebo metody k jeho zobrazení.
  • Ikona Upozornění by měla být použita střídmě.
  • Popište situaci upozornění jasně a stručně ve zprávě upozornění.
  • Název výchozího tlačítka by měl odpovídat akci, kterou popisujete ve zprávě upozornění.

Další informace najdete v části Upozorněnív pokynech pro lidské rozhraní OS X společnosti Apple.

Anatomie výstrahy

Jak je uvedeno výše, upozornění by se měla zobrazit uživateli vaší aplikace, když dojde k závažnému problému nebo jako upozornění na potenciální ztrátu dat (například zavření neuloženého souboru). V Xamarin.Mac se výstraha vytvoří v kódu jazyka C#, například:

var alert = new NSAlert () {
  AlertStyle = NSAlertStyle.Critical,
  InformativeText = "We need to save the document here...",
  MessageText = "Save Document",
};
alert.RunModal ();

Výše uvedený kód zobrazí upozornění s ikonou aplikací, která je nad ikonou upozornění, nadpisem, zprávou upozornění a jedním tlačítkem OK :

An alert with a OK button

Apple poskytuje několik vlastností, které lze použít k přizpůsobení výstrahy:

  • AlertStyle definuje typ výstrahy jako jeden z následujících způsobů:
    • Upozornění – používá se k upozornění uživatele na aktuální nebo impendující událost, která není kritická. Toto je výchozí styl.
    • Informační informace – slouží k upozornění uživatele na aktuální nebo impendující událost. V současné době neexistuje žádný viditelný rozdíl mezi upozorněním a informačním
    • Kritické – používá se k upozornění uživatele na závažné důsledky impendující události (například odstranění souboru). Tento typ výstrahy by měl být používán střídmě.
  • MessageText – toto je hlavní zpráva nebo název upozornění a měl by rychle definovat situaci pro uživatele.
  • Informativnítext – Toto je tělo upozornění, ve kterém byste měli jasně definovat situaci a prezentovat funkční možnosti pro uživatele.
  • Ikona – Umožňuje uživateli zobrazit vlastní ikonu.
  • HelpAnchor&ShowHelp – Umožňuje, aby byla výstraha svázána s nápovědou aplikace a zobrazovala nápovědu pro výstrahu.
  • Tlačítka – Ve výchozím nastavení má upozornění jenom tlačítko OK , ale kolekce Tlačítka umožňuje podle potřeby přidat další možnosti.
  • ShowsSuppressionButton – Pokud true zobrazí zaškrtávací políčko, které může uživatel použít k potlačení výstrahy pro následné výskyty události, která ji aktivovala.
  • AccessoryView – Umožňuje připojit k upozornění další dílčí zobrazení, které poskytuje další informace, jako je přidání textového pole pro zadávání dat. Pokud nastavíte nový Objekt AccessoryView nebo upravíte existující, je potřeba volat metodu Layout() pro úpravu viditelného rozložení výstrahy.

Zobrazení upozornění

Upozornění se dá zobrazit dvěma různými způsoby, Free-Floating nebo jako list. Následující kód zobrazí upozornění jako volné plovoucí:

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 ();

Pokud je tento kód spuštěný, zobrazí se následující:

A simple alert

Následující kód zobrazí stejnou výstrahu jako list:

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);

Pokud je tento kód spuštěný, zobrazí se následující:

An alert displayed as a sheet

Práce s tlačítky upozornění

Ve výchozím nastavení zobrazí výstraha pouze tlačítko OK . Nejste ale omezeni na to, můžete vytvořit další tlačítka tak, že je připojíte k kolekci Tlačítka . Následující kód vytvoří bezplatnou plovoucí výstrahu s tlačítkem OK, Zrušit a Možná :

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 ();

První přidané tlačítko bude výchozí tlačítko , které se aktivuje, pokud uživatel stiskne klávesu Enter. Vrácená hodnota bude celé číslo představující tlačítko, které uživatel stisknul. V našem případě se vrátí následující hodnoty:

  • OK - 1000.
  • Zrušit – 1001.
  • Možná - 1002.

Pokud kód spustíme, zobrazí se následující:

An alert with three button options

Tady je kód pro stejnou výstrahu jako list:

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);
});

Pokud je tento kód spuštěný, zobrazí se následující:

A three button alert displayed as a sheet

Důležité

Do výstrahy byste nikdy neměli přidávat více než tři tlačítka.

Zobrazení tlačítka potlačit

Pokud je truevlastnost Výstraha ShowSuppressButton , zobrazí výstraha zaškrtávací políčko, které může uživatel použít k potlačení výstrahy pro následné výskyty události, která ji aktivovala. Následující kód zobrazí bezplatnou plovoucí výstrahu s tlačítkem potlačování:

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);

Pokud je NSCellStateValue.Onhodnota, alert.SuppressionButton.State uživatel zaškrtnut políčko Potlačit, jinak ne.

Pokud je kód spuštěný, zobrazí se následující:

An alert with a suppress button

Tady je kód pro stejnou výstrahu jako list:

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);
});

Pokud je tento kód spuštěný, zobrazí se následující:

An alert with a suppress button display as a sheet

Přidání vlastního dílčího zobrazení

Výstrahy mají AccessoryView vlastnost, kterou lze použít k dalšímu přizpůsobení výstrahy a přidání věcí, jako je textové pole pro uživatelský vstup. Následující kód vytvoří bezplatnou plovoucí výstrahu s přidaným textovým vstupním polem:

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);

Tady jsou var input = new NSTextField (new CGRect (0, 0, 300, 20)); klíčové řádky, které vytvoří nové textové pole , které přidáme výstrahu. alert.AccessoryView = input; která připojí textové pole k upozornění a volání Layout() metody, která se vyžaduje ke změně velikosti výstrahy tak, aby se vešla do nového dílčího zobrazení.

Pokud kód spustíme, zobrazí se následující:

If we run the code, the following will be displayed

Toto je stejná výstraha jako list:

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);
});

Pokud tento kód spustíme, zobrazí se následující:

An alert with a custom view

Souhrn

Tento článek se podrobně podíval na práci s výstrahami v aplikaci Xamarin.Mac. Viděli jsme různé typy a použití výstrah, jak vytvářet a přizpůsobovat výstrahy a jak pracovat s výstrahami v kódu jazyka C#.