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í výstrah z kódu jazyka C# a odpovídá 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 .

Výstraha je zvláštní 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.

Příklad upozornění

V tomto článku se budeme zabývat základy práce s upozorněními v aplikaci Xamarin.Mac.

Úvod do upozornění

Výstraha je zvláštní 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ýstrahy naruší uživatele, protože musí být zavřené, aby uživatel mohl pokračovat se svou úlohou, 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 výstrahu pro běžné a vrátitelné akce. I když by tato situace mohla způsobit ztrátu dat.
  • Pokud je situace hodná výstraha, vyhněte se použití jakéhokoli jiného prvku uživatelského rozhraní nebo metody k jeho zobrazení.
  • Ikona Upozornění by se měla používat střídmě.
  • Jasně a stručně popište situaci výstrahy 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 uživatelům vaší aplikace zobrazit, 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 kódu jazyka C# vytvoří upozornění, 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 aplikace nad ikonou upozornění, názvem, zprávou upozornění a jediným tlačítkem OK :

Upozornění s tlačítkem OK

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

  • AlertStyle definuje typ výstrahy jako jednu z následujících možností:
    • Upozornění – Používá se k upozornění uživatele na aktuální nebo nadcházející událost, která není kritická. Toto je výchozí styl.
    • Informační – používá se k upozornění uživatele na aktuální nebo nadcházejí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 nadcházející události (například odstranění souboru). Tento typ upozornění by se měl používat střídmě.
  • MessageText – Toto je hlavní zpráva nebo název výstrahy a měl by rychle definovat situaci pro uživatele.
  • Informativnítext – Toto je text výstrahy, ve které byste měli jasně definovat situaci a prezentovat funkční možnosti pro uživatele.
  • Ikona – Umožňuje uživateli zobrazit vlastní ikonu.
  • HelpAnchor & ShowsHelp - Umožňuje, aby byla výstraha svázaná s helpbookem aplikace a zobrazovala nápovědu pro výstrahu.
  • Tlačítka – Ve výchozím nastavení má upozornění pouze 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 výstraze další dílčí zobrazení, které poskytuje další informace, například přidání textového pole pro zadávání dat. Pokud nastavíte nové AccessoryView nebo upravíte existující objekt, je nutné volat metodu Layout() pro úpravu viditelného rozložení výstrahy.

Zobrazení výstrahy

Upozornění se dá zobrazit dvěma různými způsoby, volným plovoucím 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í kód:

Jednoduchá výstraha

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 se tento kód spustí, zobrazí se následující kód:

Výstraha zobrazená jako list

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

Ve výchozím nastavení výstraha zobrazuje pouze tlačítko OK . Nejste ale omezeni, 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 stiskl. 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í:

Upozornění se třemi možnostmi tlačítka

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 se tento kód spustí, zobrazí se následující kód:

Upozornění na tři tlačítka zobrazené jako list

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í upozornění s volným plovoucím pohyblivým tlačítkem:

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 nemají.

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

Upozornění s tlačítkem potlačování

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 se tento kód spustí, zobrazí se následující kód:

Upozornění s tlačítkem potlačení, které se zobrazí jako list

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

Výstrahy mají AccessoryView vlastnost, která se dá 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ří upozornění s volným plovoucím textem 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á je nutná ke změně velikosti výstrahy tak, aby se vešla do nového podview.

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

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

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í kód:

Upozornění s vlastním zobrazením

Shrnutí

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 upozorněními v kódu jazyka C#.