Standardní ovládací prvky v Xamarin.Mac

Tento článek popisuje práci se standardními ovládacími prvky AppKitu, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky v aplikaci Xamarin.Mac. Popisuje jejich přidání do rozhraní s Tvůrcem rozhraní a interakci s nimi v kódu.

Při práci s jazykem C# a .NET v aplikaci Xamarin.Mac máte přístup ke stejným ovládacím prvkům AppKitu, ve Objective-C kterých vývojář pracuje, a Xcode . Vzhledem k tomu, že se Xamarin.Mac integruje přímo s Xcode, můžete pomocí Tvůrce rozhraní Xcode vytvářet a udržovat ovládací prvky Appkitu (nebo je volitelně vytvářet přímo v kódu jazyka C#).

Ovládací prvky AppKitu jsou prvky uživatelského rozhraní, které slouží k vytvoření uživatelského rozhraní aplikace Xamarin.Mac. Skládají se z prvků, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky, a způsobují okamžité akce nebo viditelné výsledky, když s nimi uživatel manipuluje.

The example app main screen

V tomto článku se budeme zabývat základy práce s ovládacími prvky AppKit v aplikaci Xamarin.Mac. Důrazně doporučujeme, abyste si nejprve prošli článek Hello, Mac , konkrétně úvod do Xcode a Tvůrce rozhraní a výstupy a akce , protože se zabývá klíčovými koncepty a technikami, které budeme používat v tomto článku.

Možná se také budete chtít podívat na oddíly v dokumentu Interní dokumenty Xamarin.Mac pro zveřejnění tříd a metodObjective-Cjazyka C#. Vysvětluje také, které Register příkazy a Export které se používají k připojení tříd jazyka C# k Objective-C objektům a prvkům uživatelského rozhraní.

Úvod do ovládacích prvků a zobrazení

macOS (dříve označovaný jako Mac OS X) poskytuje standardní sadu ovládacích prvků uživatelského rozhraní prostřednictvím rozhraní AppKit Framework. Skládají se z prvků, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky, a způsobují okamžité akce nebo viditelné výsledky, když s nimi uživatel manipuluje.

Všechny ovládací prvky AppKit mají standardní integrovaný vzhled, který bude vhodný pro většinu použití, některé určují alternativní vzhled pro použití v oblasti rámečku okna nebo v kontextu efektu vibrování , například v oblasti bočního panelu nebo ve widgetu Centrum oznámení.

Apple navrhuje následující pokyny při práci s ovládacími prvky AppKit:

  • Vyhněte se kombinování velikostí ovládacích prvků ve stejném zobrazení.
  • Obecně se vyhněte vertikální změně velikosti ovládacích prvků.
  • V ovládacím prvku použijte systémové písmo a správnou velikost textu.
  • Použijte správné mezery mezi ovládacími prvky.

Další informace najdete v části O ovládacích prvcích a zobrazeních společnosti Apple v pokynech pro lidské rozhraní OS X.

Použití ovládacích prvků v rámečku okna

K dispozici je podmnožina ovládacích prvků AppKit, které obsahují styl zobrazení, který umožňuje zahrnout je do oblasti rámečku okna. Příklad najdete na panelu nástrojů aplikace Pošta:

A Mac Window frame

  • Tlačítko s kruhovou texturou - A NSButton se stylem NSTexturedRoundedBezelStyle.
  • Texturovaný zaoblený segmentovaný ovládací prvek - A NSSegmentedControl s stylem NSSegmentStyleTexturedRounded.
  • Texturovaný zaoblený segmentovaný ovládací prvek - A NSSegmentedControl s stylem NSSegmentStyleSeparated.
  • Kruhová texturovaná místní nabídka - A NSPopUpButton s stylem NSTexturedRoundedBezelStyle.
  • Kruhová texturovaná rozevírací nabídka - A NSPopUpButton s stylem NSTexturedRoundedBezelStyle.
  • Panel hledání - A NSSearchField.

Apple navrhuje následující pokyny při práci s ovládacími prvky AppKit v rámečku okna:

  • Nepoužívejte styly ovládacích prvků specifické pro rámeček okna v textu okna.
  • Nepoužívejte v rámečku okna ovládací prvky ani styly textu okna.

Další informace najdete v části O ovládacích prvcích a zobrazeních společnosti Apple v pokynech pro lidské rozhraní OS X.

Vytvoření uživatelského rozhraní v Tvůrci rozhraní

Když vytvoříte novou aplikaci Xamarin.Mac Cocoa, ve výchozím nastavení se zobrazí standardní prázdné okno. Tato okna jsou definována .storyboard v souboru, který je automaticky zahrnutý v projektu. Pokud chcete upravit návrh oken, poklikejte v Průzkumník řešení na Main.storyboard soubor:

Selecting the Main Storyboard in the Solution Explorer

Otevře se návrh okna v Tvůrci rozhraní Xcode:

Editing the storyboard in Xcode

Chcete-li vytvořit uživatelské rozhraní, přetáhnete prvky uživatelského rozhraní (ovládací prvky AppKit) z inspektoru knihovny do editoru rozhraní v Tvůrci rozhraní. V následujícím příkladu byl ovládací prvek Svislé rozdělené zobrazení drogou z Inspektoru knihovny a umístěn do okna v Editoru rozhraní:

Selecting a Split View from the Library

Další informace o vytváření uživatelského rozhraní v Tvůrci rozhraní naleznete v naší dokumentaci Úvod do Xcode a Interface Builder .

Určení velikosti a umístění

Jakmile je ovládací prvek součástí uživatelského rozhraní, pomocí editoru omezení nastavte jeho umístění a velikost zadáním hodnot ručně a určete, jak se ovládací prvek automaticky umístí a velikost při změně velikosti nadřazeného okna nebo zobrazení:

Setting the constraints

Pomocí červených I-Paprsků kolem vnější části pole Autoresizing přilepte ovládací prvek na dané místo (x,y). Příklad:

Editing a constraint

Určuje, že vybraný ovládací prvek (v Editoru zobrazení hierarchie a rozhraní) se zablokuje na pravé horní a pravé místo okna nebo zobrazení při změně velikosti nebo přesunutí.

Další prvky vlastností ovládacího prvku editoru, jako je Výška a Šířka:

Setting the height

Zarovnání prvků s omezeními můžete řídit také pomocí Editoru zarovnání:

The Alignment Editor

Důležité

Na rozdíl od iOSu, kde (0,0) je levý horní roh obrazovky, v macOS (0,0) je levý dolní roh. Důvodem je to, že macOS používá matematický souřadnicový systém s číselnými hodnotami, které se zvětšují směrem nahoru a doprava. Při umísťování ovládacích prvků AppKit do uživatelského rozhraní je potřeba vzít v úvahu.

Nastavení vlastní třídy

Při práci s ovládacími prvky AppKitu potřebujete podtřídu a existující ovládací prvek a vytvořit vlastní verzi této třídy. Například definování vlastní verze zdrojového seznamu:

using System;
using AppKit;
using Foundation;

namespace AppKit
{
    [Register("SourceListView")]
    public class SourceListView : NSOutlineView
    {
        #region Computed Properties
        public SourceListDataSource Data {
            get {return (SourceListDataSource)this.DataSource; }
        }
        #endregion

        #region Constructors
        public SourceListView ()
        {

        }

        public SourceListView (IntPtr handle) : base(handle)
        {

        }

        public SourceListView (NSCoder coder) : base(coder)
        {

        }

        public SourceListView (NSObjectFlag t) : base(t)
        {

        }
        #endregion

        #region Override Methods
        public override void AwakeFromNib ()
        {
            base.AwakeFromNib ();

        }
        #endregion

        #region Public Methods
        public void Initialize() {

            // Initialize this instance
            this.DataSource = new SourceListDataSource (this);
            this.Delegate = new SourceListDelegate (this);

        }

        public void AddItem(SourceListItem item) {
            if (Data != null) {
                Data.Items.Add (item);
            }
        }
        #endregion

        #region Events
        public delegate void ItemSelectedDelegate(SourceListItem item);
        public event ItemSelectedDelegate ItemSelected;

        internal void RaiseItemSelected(SourceListItem item) {
            // Inform caller
            if (this.ItemSelected != null) {
                this.ItemSelected (item);
            }
        }
        #endregion
    }
}

[Register("SourceListView")] Kde instrukce zveřejňuje SourceListView tříduObjective-C, aby bylo možné ji použít v Tvůrci rozhraní. Další informace najdete v části "Zveřejnění tříd a metod jazyka C# v Objective-C dokumentu Internals Xamarin.Mac", vysvětluje a RegisterExport příkazy používané k připojení tříd jazyka C# k Objective-C objektům a prvkům uživatelského rozhraní.

S výše uvedeným kódem můžete přetáhnout Ovládací prvek AppKitu, základního typu, který rozšiřujete, na návrhovou plochu (v příkladu níže zdrojový seznam), přepnout na Kontrolu identit a nastavit vlastní třídu na název, který jste odhalili Objective-C (příklad SourceListView):

Setting a custom class in Xcode

Zveřejnění výstupů a akcí

Než bude ovládací prvek AppKitu přístupný v kódu jazyka C#, musí být vystaven jako výstup nebo akce. Uděláte to tak, že vyberete daný ovládací prvek v hierarchii rozhraní nebo editoru rozhraní a přepnete do zobrazení Pomocníka (ujistěte se, že máte .h vybrané okno pro úpravy):

Selecting the correct file to edit

Přetažením ovládacího prvku Control z ovládacího prvku AppKit do souboru give .h zahájíte vytváření výstupu nebo akce:

Dragging to create an Outlet or Action

Vyberte typ expozice, který chcete vytvořit, a dejte výstupu nebo akci název:

Configuring the Outlet or Action

Další informace o práci s výstupy a akcemi naleznete v části Výstupy a akce v naší dokumentaci Úvod do Xcode a Interface Builderu.

Synchronizace změn pomocí Xcode

Když přepnete zpět na Visual Studio pro Mac z Xcode, všechny změny provedené v Xcode se automaticky synchronizují s projektem Xamarin.Mac.

Pokud vyberete SplitViewController.designer.cs v Průzkumník řešení uvidíte, jak byla vaše zásuvka a akce připojeny v našem kódu jazyka C#:

Synchronizing Changes with Xcode

Všimněte si, jak definice v SplitViewController.designer.cs souboru:

[Outlet]
AppKit.NSSplitViewItem LeftController { get; set; }

[Outlet]
AppKit.NSSplitViewItem RightController { get; set; }

[Outlet]
AppKit.NSSplitView SplitView { get; set; }

Zarovná se s definicí v MainWindow.h souboru v Xcode:

@interface SplitViewController : NSSplitViewController {
    NSSplitViewItem *_LeftController;
    NSSplitViewItem *_RightController;
    NSSplitView *_SplitView;
}

@property (nonatomic, retain) IBOutlet NSSplitViewItem *LeftController;

@property (nonatomic, retain) IBOutlet NSSplitViewItem *RightController;

@property (nonatomic, retain) IBOutlet NSSplitView *SplitView;

Jak vidíte, Visual Studio pro Mac naslouchá změnám .h souboru a potom tyto změny automaticky synchronizuje v příslušném .designer.cs souboru, aby je zpřístupnil vaší aplikaci. Můžete si také všimnout, že SplitViewController.designer.cs jde o částečnou třídu, takže Visual Studio pro Mac nemusí upravovatSplitViewController.cs, což by přepsalo všechny změny, které jsme provedli ve třídě.

Obvykle nebudete muset otevřít SplitViewController.designer.cs sami sebe, to bylo prezentováno pouze pro vzdělávací účely.

Důležité

Ve většině situací Visual Studio pro Mac automaticky uvidí všechny změny provedené v Xcode a synchronizují je s projektem Xamarin.Mac. V vypnutém výskytu, ke kterému synchronizace neproběhla automaticky, přepněte zpět na Xcode a vraťte se zpět na Visual Studio pro Mac znovu. Tím se obvykle spustí synchronizační cyklus.

Práce s tlačítky

AppKit nabízí několik typů tlačítek, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části Tlačítka pokynů apple pro lidské rozhraní OS X.

An example of the different button types

Pokud je tlačítko vystaveno prostřednictvím výstupu, bude na něj reagovat následující kód:

ButtonOutlet.Activated += (sender, e) => {
        FeedbackLabel.StringValue = "Button Outlet Pressed";
};

U tlačítek, která byla vystavena prostřednictvím akcí, public partial se automaticky vytvoří metoda s názvem, který jste zvolili v Xcode. Chcete-li odpovědět na akci, dokončete částečnou metodu ve třídě, na které byla akce definována. Příklad:

partial void ButtonAction (Foundation.NSObject sender) {
    // Do something in response to the Action
    FeedbackLabel.StringValue = "Button Action Pressed";
}

U tlačítek se stavem (například Zapnuto a Vypnuto) lze stav zkontrolovat nebo nastavit pomocí State vlastnosti proti výčtu NSCellStateValue. Příklad:

DisclosureButton.Activated += (sender, e) => {
    LorumIpsum.Hidden = (DisclosureButton.State == NSCellStateValue.On);
};

Kde NSCellStateValue může být:

  • Zapnuto – Tlačítko je stisknuto nebo je vybrán ovládací prvek (například zaškrtávací políčko se změnami).
  • Vypnuto – tlačítko není nabízeno nebo není vybrán ovládací prvek.
  • Smíšená - směs stavů Zapnuto a Vypnuto .

Označení tlačítka jako výchozího a nastavení ekvivalentu klíče

U všech tlačítek, které jste přidali do návrhu uživatelského rozhraní, můžete toto tlačítko označit jako výchozí tlačítko, které se aktivuje, když uživatel na klávesnici stiskne klávesu Return/Enter . V systému macOS toto tlačítko ve výchozím nastavení obdrží modrou barvu pozadí.

Pokud chcete nastavit tlačítko jako výchozí, vyberte ho v Tvůrci rozhraní Xcode. Potom v inspektoru atributů vyberte pole Ekvivalent klíče a stiskněte klávesu Return/Enter:

Editing the Key Equivalent

Stejně tak můžete přiřadit libovolnou posloupnost kláves, která se dá použít k aktivaci tlačítka pomocí klávesnice místo myši. Například stisknutím kláves Command-C na obrázku výše.

Když je aplikace spuštěná a okno s tlačítkem je klávesová a prioritní, pokud uživatel stiskne Command-C, aktivuje se akce tlačítka (jako kdyby uživatel klikl na toto tlačítko).

Práce se zaškrtávacími políčky a přepínači

AppKit poskytuje několik typů zaškrtávacích políček a skupin přepínačů, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části Tlačítka pokynů apple pro lidské rozhraní OS X.

An example of the available checkbox types

Zaškrtávací políčka a přepínače (vystavená prostřednictvím výstupů) mají stav (například Zapnuto a Vypnuto), stav lze zaškrtnout nebo nastavit s State vlastností proti výčtu NSCellStateValue . Příklad:

AdjustTime.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Adjust Time: {0}",AdjustTime.State == NSCellStateValue.On);
};

Kde NSCellStateValue může být:

  • Zapnuto – Tlačítko je stisknuto nebo je vybrán ovládací prvek (například zaškrtávací políčko se změnami).
  • Vypnuto – tlačítko není nabízeno nebo není vybrán ovládací prvek.
  • Smíšená - směs stavů Zapnuto a Vypnuto .

Pokud chcete vybrat tlačítko ve skupině přepínačů, vystavte přepínač, který chcete vybrat jako zásuvku a nastavit jeho State vlastnost. Příklad:

partial void SelectCar (Foundation.NSObject sender) {
    TransportationCar.State = NSCellStateValue.On;
    FeedbackLabel.StringValue = "Car Selected";
}

Pokud chcete získat kolekci přepínačů, aby fungovala jako skupina a automaticky zpracovávala vybraný stav, vytvořte novou akci a připojte k ní každé tlačítko ve skupině:

Creating a new Action

V dalším kroku přiřaďte každému přepínači v inspektoru atributů jedinečnou hodnotuTag:

Editing a radio button tag

Uložte změny a vraťte se do Visual Studio pro Mac, přidejte kód pro zpracování akce, ke které jsou připojena všechna přepínače:

partial void NumberChanged(Foundation.NSObject sender)
{
    var check = sender as NSButton;
    Console.WriteLine("Changed to {0}", check.Tag);
}

Pomocí vlastnosti můžete Tag zjistit, které přepínač byl vybrán.

Práce s ovládacími prvky nabídky

AppKit poskytuje několik typů ovládacích prvků nabídek, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části Ovládací prvky nabídek pokynů apple pro lidské rozhraní OS X.

Example menu controls

Poskytování dat ovládacích prvků nabídky

Ovládací prvky nabídky dostupné pro macOS lze nastavit tak, aby se rozevírací seznam naplnil buď z interního seznamu (který lze předem definovat v Tvůrci rozhraní nebo naplnit kódem), nebo poskytnutím vlastního externího zdroje dat.

Práce s interními daty

Kromě definování položek v Interface Builderu poskytují ovládací prvky nabídky (například NSComboBox) úplnou sadu metod, které umožňují přidat, upravit nebo odstranit položky z interního seznamu, který udržují:

  • Add - Přidá novou položku na konec seznamu.
  • GetItem – Vrátí položku v daném indexu.
  • Insert - Vloží novou položku do seznamu v daném umístění.
  • IndexOf - Vrátí index dané položky.
  • Remove - Odebere danou položku ze seznamu.
  • RemoveAll – Odebere všechny položky ze seznamu.
  • RemoveAt - Odebere položku v daném indexu.
  • Count – Vrátí počet položek v seznamu.

Důležité

Pokud používáte externí zdroj dat (UsesDataSource = true), vyvolání některé z výše uvedených metod vyvolá výjimku.

Práce s externím zdrojem dat

Místo použití předdefinovaných interních dat k poskytnutí řádků pro ovládací prvek nabídky můžete volitelně použít externí zdroj dat a poskytnout vlastní záložní úložiště pro položky (například databázi SQLite).

Pokud chcete pracovat s externím zdrojem dat, vytvoříte instanci zdroje dat ovládacího prvku nabídky (NSComboBoxDataSource například) a přepíšete několik metod pro poskytnutí potřebných dat:

  • ItemCount – Vrátí počet položek v seznamu.
  • ObjectValueForItem – Vrátí hodnotu položky pro daný index.
  • IndexOfItem – Vrátí index pro hodnotu dané položky.
  • CompletedString – Vrátí první odpovídající hodnotu položky pro částečně zadaná hodnota položky. Tato metoda se volá pouze v případě, že je povolené automatické dokončování (Completes = true).

Další podrobnosti najdete v části Databáze a pole se seznamem v dokumentu Práce s databázemi.

Úprava vzhledu seznamu

K dispozici jsou následující metody pro úpravu vzhledu ovládacího prvku nabídky:

  • HasVerticalScroller - Pokud true, ovládací prvek zobrazí svislý posuvník.
  • VisibleItems - Upravte počet položek zobrazených při otevření ovládacího prvku. Výchozí hodnota je pět (5).
  • IntercellSpacing - Upravte velikost místa kolem dané položky zadáním NSSize místa, kde Width určuje levý a pravý okraj a Height určuje mezeru před a za položkou.
  • ItemHeight – Určuje výšku každé položky v seznamu.

V případě rozevíracích NSPopupButtonstypů obsahuje první položka nabídky název ovládacího prvku. Příklad:

An example menu control

Pokud chcete změnit název, zveřejníte tuto položku jako výstup a použijete kód podobný tomuto:

DropDownSelected.Title = "Item 1";

Manipulace s vybranými položkami

Následující metody a vlastnosti umožňují manipulovat s vybranými položkami v seznamu ovládacích prvků nabídky:

  • SelectItem - Vybere položku v daném indexu.
  • Select - Vyberte danou hodnotu položky.
  • DeselectItem – Zruší výběr položky v daném indexu.
  • SelectedIndex – Vrátí index aktuálně vybrané položky.
  • SelectedValue – Vrátí hodnotu aktuálně vybrané položky.

ScrollItemAtIndexToTop Umožňuje prezentovat položku v daném indexu v horní části seznamu a ScrollItemAtIndexToVisible v seznamu se posouvat tak, aby se položka v daném indexu zobrazovala.

Reakce na události

Ovládací prvky nabídky poskytují následující události pro reakci na interakci uživatele:

  • SelectionChanged – Volá se, když uživatel vybral hodnotu ze seznamu.
  • SelectionIsChanging - Volá se před tím, než se nová položka vybrané uživatelem stane aktivním výběrem.
  • WillPopup – Volá se před zobrazením rozevíracího seznamu položek.
  • WillDismiss - Volá se před zavřeným rozevíracím seznamem položek.

U NSComboBox ovládacích prvků zahrnují všechny stejné události, jako NSTextFieldChanged je událost, která se volá pokaždé, když uživatel upraví hodnotu textu v poli se seznamem.

Volitelně můžete odpovědět na položky nabídky Interní data definované v Tvůrci rozhraní, které jsou vybrány, připojením položky k akci a použitím kódu, jako je následující, aby reagoval na akci aktivovaný uživatelem:

partial void ItemOne (Foundation.NSObject sender) {
    DropDownSelected.Title = "Item 1";
    FeedbackLabel.StringValue = "Item One Selected";
}

Další informace o práci s nabídkami a ovládacími prvky nabídek najdete v dokumentaci k nabídkám a místním tlačítkům a rozevíracím seznamům.

Práce s ovládacími prvky výběru

AppKit poskytuje několik typů ovládacích prvků výběru, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části Ovládací prvky výběru pokynů apple pro lidské rozhraní OS X.

Example selection controls

Existují dva způsoby, jak sledovat, kdy ovládací prvek výběru má interakci uživatele tím, že ho zobrazí jako akci. Příklad:

partial void SegmentButtonPressed (Foundation.NSObject sender) {
    FeedbackLabel.StringValue = string.Format("Button {0} Pressed",SegmentButtons.SelectedSegment);
}

Nebo připojením delegáta Activated k události. Příklad:

TickedSlider.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);
};

Chcete-li nastavit nebo přečíst hodnotu ovládacího prvku výběru, použijte IntValue vlastnost. Příklad:

FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);

Speciální ovládací prvky (například Color Well a Image Well) mají pro jejich typy hodnot specifické vlastnosti. Příklad:

ColorWell.Color = NSColor.Red;
ImageWell.Image = NSImage.ImageNamed ("tag.png");

NSDatePicker následující vlastnosti pro práci přímo s datem a časem:

  • DateValue – aktuální hodnota data a času jako NSDatehodnota .
  • Místní – umístění uživatele jako NSLocal.
  • TimeInterval – hodnota času jako Double.
  • Časové pásmo – časové pásmo uživatele jako NSTimeZone.

Práce s ovládacími prvky indikátoru

AppKit poskytuje několik typů ovládacích prvků indikátorů, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části Ovládací prvky indikátorů pokynů apple pro lidské rozhraní OS X.

Example indicator controls

Existují dva způsoby, jak sledovat, kdy má ovládací prvek indikátoru interakci uživatele, buď jeho zveřejněním jako akce, nebo výstupem a připojením delegáta Activated k události. Příklad:

LevelIndicator.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Level: {0:###}",LevelIndicator.DoubleValue);
};

Chcete-li číst nebo nastavit hodnotu ovládacího prvku indikátoru, použijte DoubleValue vlastnost. Příklad:

FeedbackLabel.StringValue = string.Format("Rating: {0:###}",Rating.DoubleValue);

Při zobrazení by měly být animované indikátory neurčitého a asynchronního průběhu. StartAnimation Pomocí metody spusťte animaci, když se zobrazí. Příklad:

Indeterminate.StartAnimation (this);
AsyncProgress.StartAnimation (this);

Volání metody StopAnimation zastaví animaci.

Práce s textovými ovládacími prvky

AppKit poskytuje několik typů textových ovládacích prvků, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části Ovládací prvky textu v Pokynech pro lidské rozhraní OS X společnosti Apple.

Example text controls

U textových polí (NSTextField) lze ke sledování interakce uživatelů použít následující události:

  • Změněno – aktivuje se pokaždé, když uživatel změní hodnotu pole. Například u každého typu znaku.
  • EditingBegan – aktivuje se, když uživatel vybere pole pro úpravy.
  • EditingEnded – Když uživatel stiskne klávesu Enter v poli nebo pole opustí.

StringValue Pomocí vlastnosti můžete číst nebo nastavit hodnotu pole. Příklad:

FeedbackLabel.StringValue = string.Format("User ID: {0}",UserField.StringValue);

U polí, která zobrazují nebo upravují číselné hodnoty, můžete použít IntValue vlastnost. Příklad:

FeedbackLabel.StringValue = string.Format("Number: {0}",NumberField.IntValue);

Poskytuje NSTextView plnohodnotnou oblast pro úpravy a zobrazení textu s integrovaným formátováním. NSTextFieldPodobně jako v případě , použijte StringValue vlastnost ke čtení nebo nastavení hodnoty oblasti.

Příklad složitého příkladu práce se zobrazeními textu v aplikaci Xamarin.Mac najdete v ukázkové aplikaci SourceWriter. SourceWriter je jednoduchý editor zdrojového kódu, který poskytuje podporu pro dokončování kódu a jednoduché zvýrazňování syntaxe.

Zdrojový kód byl plně okomentován a pokud je k dispozici, odkazy byly poskytovány z klíčových technologií nebo metod relevantních informací v dokumentaci průvodců Xamarin.Mac.

Práce se zobrazeními obsahu

AppKit poskytuje několik typů zobrazení obsahu, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části Zobrazení obsahu pokynů apple pro lidské rozhraní OS X.

An example content view

Překryvná okna

Překryvné okno je přechodný prvek uživatelského rozhraní, který poskytuje funkce, které přímo souvisí s konkrétním ovládacím prvkem nebo oblastí na obrazovce. Překryvné okno nad oknem, které obsahuje ovládací prvek nebo oblast, se kterou souvisí, a jeho ohraničení obsahuje šipku označující bod, ze kterého se objevil.

Pokud chcete vytvořit překryvné okno, postupujte takto:

  1. .storyboard Otevřete soubor okna, do kterého chcete přidat překryvné okno, poklikáním na něj v Průzkumník řešení

  2. Přetáhněte kontroler zobrazení z nástroje Library Inspector do editoru rozhraní:

    Selecting a View Controller from the Library

  3. Definujte velikost a rozložení vlastního zobrazení:

    Editing the layout

  4. Stisknutou klávesou Control a přetažením ze zdroje překryvného okna na řadič zobrazení:

    Dragging to create a segue

  5. V místní nabídce vyberte překryvné okno :

    Setting the segue type

  6. Uložte změny a vraťte se do Visual Studio pro Mac pro synchronizaci s Xcode.

Zobrazení karet

Zobrazení karet se skládá ze seznamu karet (který vypadá podobně jako segmentovaný ovládací prvek) v kombinaci se sadou zobrazení, která se nazývají podokna. Když uživatel vybere novou kartu, zobrazí se podokno, které je k němu připojené. Každé podokno obsahuje vlastní sadu ovládacích prvků.

Při práci se zobrazením karet v Tvůrci rozhraní Xcode nastavte počet karet pomocí inspektoru atributů:

Editing the number of tabs

Vyberte každou kartu v hierarchii rozhraní a nastavte její název a přidejte prvky uživatelského rozhraní do jeho podokna:

Editing the tabs in Xcode

Ovládací prvky AppKitu pro datové vazby

Pomocí technik kódování klíč-hodnota a datové vazby v aplikaci Xamarin.Mac můžete výrazně snížit množství kódu, který musíte napsat a udržovat pro naplnění a práci s prvky uživatelského rozhraní. Výhodou je také další oddělení backingových dat (datový model) od front-endového uživatelského rozhraní (Model-View-Controller), což usnadňuje údržbu a flexibilnější návrh aplikace.

Kódování klíč-hodnota (KVC) je mechanismus pro přístup k vlastnostem objektu nepřímo pomocí klíčů (speciálně formátovaných řetězců) k identifikaci vlastností místo přístupu prostřednictvím proměnných instancí nebo metod přístupového objektu (get/set). Implementací přístupových objektů kompatibilních s kódováním klíč-hodnota v aplikaci Xamarin.Mac získáte přístup k dalším funkcím systému macOS, jako je KVO (Key-Value Observing), Datová vazba, Základní data, vazby Cocoa a skriptovatelnost.

Další informace najdete v části Jednoduchá datová vazba v dokumentaci k kódování datových vazeb a klíč-hodnota.

Shrnutí

Tento článek se podrobně podíval na práci se standardními ovládacími prvky AppKitu, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky v aplikaci Xamarin.Mac. Zahrnovalo jejich přidání do návrhu uživatelského rozhraní v Tvůrci rozhraní Xcode, který je vystavuje kódu prostřednictvím výstupů a akcí a práce s ovládacími prvky AppKit v kódu jazyka C#.