Schnellstart: Hallo, iOSHello, iOS – Quickstart

Dieses Handbuch beschreibt, wie Sie eine Anwendung erstellen, die eine vom Benutzer eingegebene alphanumerische Telefonnummer in eine numerische Telefonnummer übersetzt und anschließend diese Nummer anruft.This guide describes how to create an application that translates an alphanumeric phone number entered by the user into a numeric phone number, and then calls that number. Die endgültige Anwendung sieht wie folgt aus:The final application looks like this:

Requirements (Anforderungen)Requirements

Die iOS-Entwicklung mit Xamarin erfordert:iOS development with Xamarin requires:

  • Einen Mac mit macOS High Sierra (10.13) oder höher.A Mac running macOS High Sierra (10.13) or above.
  • Die Installation der neuesten Version von Xcode und iOS SDK aus dem App Store.Latest version of Xcode and iOS SDK installed from the App Store .

Xamarin.iOS funktioniert mit dem folgenden Setup:Xamarin.iOS works with the following setup:

  • Neueste Version von Visual Studio für Mac, die den oben aufgeführten Spezifikationen entspricht.Latest version of Visual Studio for Mac that fits the above specifications.

Im Xamarin.iOS Mac Installation guide (Xamarin.iOS Mac-Installationsleitfaden) finden Sie ausführliche Installationsanweisungen.The Xamarin.iOS Mac Installation guide is available for step-by-step installation instructions

Xamarin.iOS funktioniert mit dem folgenden Setup:Xamarin.iOS works with the following setup:

  • Neueste Version von Visual Studio 2019 oder Visual Studio 2017 Community, Professional oder Enterprise unter Windows 10, gekoppelt mit einem Mac-Buildhost, der den oben aufgeführten Spezifikationen entspricht.Latest version of Visual Studio 2019 or Visual Studio 2017 Community, Professional, or Enterprise on Windows 10, paired with a Mac build host that fits the above specifications.

Im Xamarin.iOS Windows-Installationshandbuch finden Sie ausführliche Installationsanweisungen.The Xamarin.iOS Windows Installation guide is available for step-by-step installation instructions.

Bevor Sie starten, laden Sie den Xamarin App-Symbolsatz herunter.Before getting started, download the Xamarin App Icons set.

Exemplarische Vorgehensweise für Visual Studio für MacVisual Studio for Mac Walkthrough

In dieser exemplarischen Vorgehensweise wird erläutert, wie Sie eine Anwendung namens Phoneword erstellen, die eine alphanumerische Telefonnummer in eine numerische Telefonnummer übersetzt.This walkthrough describes how to create an application called Phoneword that translates an alphanumeric phone number into a numeric phone number.

  1. Starten Sie Visual Studio für Mac im Ordner Anwendungen oder aus Spotlight:Launch Visual Studio for Mac from the Applications folder or Spotlight:

    Klicken Sie auf dem Startbildschirm auf Neues Projekt..., um eine neue Xamarin.iOS-Projektmappe zu erstellen:On the Launch Screen, click New Project... to create a new Xamarin.iOS solution:

  2. Im Dialogfeld „Neue Projektmappe“, wählen Sie die Vorlage iOS > App > Single View Application (iOS > App > Einzelansicht) aus, um sicherzustellen, dass C# ausgewählt ist.From the New Solution dialog, choose the iOS > App > Single View Application template, ensuring that C# is selected. Klicken Sie auf Weiter:Click Next:

  3. Konfigurieren Sie die App.Configure the app. Geben Sie ihr den Namen Phoneword_iOS, und lassen Sie alles andere in der Standardeinstellung.Give it the Name Phoneword_iOS, and leave everything else as default. Klicken Sie auf Weiter:Click Next:

  4. Behalten Sie den Projekt- und den Projektmappennamen bei.Leave the Project and Solution Name as is. Wählen Sie hier den Speicherort des Projekts, oder behalten sie ihn standardmäßig:Choose the location of the project here, or keep it as the default:

  5. Klicken Sie auf Erstellen, um die Projektmappe zu erstellen.Click Create to make the Solution.

  6. Öffnen Sie die Main.storyboard-Datei durch Doppelklicken auf diese im Projektmappenpad.Open the Main.storyboard file by double-clicking on it in the Solution Pad. Dies bietet Ihnen die Möglichkeit, eine Benutzeroberfläche visuell zu erstellen:This provides a way to visually to create a UI:

    Beachten Sie, dass die Größenklassen standardmäßig aktiviert sind.Note that size classes are enabled by default. Weitere Informationen zu diesen Größenklassen finden Sie im Unified Storyboards-Handbuch.Refer to the Unified Storyboards guide to learn more about them.

  7. Geben Sie im Pad „Toolbox“ „Bezeichnung“ in die Suchleiste ein, und ziehen Sie eine Bezeichnung auf die Entwurfsoberfläche (der Bereich in der Mitte):In the Toolbox Pad, type "label" into the search bar and drag a Label onto the design surface (the area in the center):

    Hinweis

    Sie können das Eigenschaftenpad oder die Toolbox jederzeit durch Navigieren zu Ansicht > Bereiche öffnen.You can bring up the Properties Pad or Toolbox at any time by navigating to View > Pads.

  8. Ziehen Sie die Ziehpunkte der Dragging Controls (Ziehsteuerelemente) (die Kreise, um das Steuerelement herum), und verbreitern Sie die Bezeichnung:Grab the handles of the Dragging Controls (the circles around the control) and make the label wider:

  9. Nachdem Sie die Bezeichnung auf der Entwurfsoberfläche ausgewählt haben, verwenden Sie das Eigenschaftenpad, um die Text-Eigenschaft von der Bezeichnung in „Enter a Phoneword:“ (Phoneword eingeben) zu ändern.With the Label selected on the design surface, use the Properties Pad to change the Text property of the Label to "Enter a Phoneword:"

  10. Suchen Sie nach „Textfeld“ in der Toolbox, und ziehen Sie ein Textfeld aus der Toolbox auf die Entwurfsoberfläche, und platzieren Sie es unter der Bezeichnung.Search for “text field” inside the Toolbox and drag a Text Field from the Toolbox onto the design surface and place it under the Label. Passen Sie die Breite so an, bis die Breite des Textfelds mit jener der Bezeichnung identisch ist:Adjust the width until the Text Field is the same width as the Label:

  11. Nachdem Sie das Textfeld auf der Entwurfsoberfläche ausgewählt haben, ändern Sie die Name-Eigenschaft des Textfelds im Identitätsabschnitt des Eigenschaftenpads in PhoneNumberText, und ändern Sie die Text-Eigenschaft in „1-855-XAMARIN“:With the Text Field selected on the design surface, change the Text Field’s Name property in the Identity section of the Properties Pad to PhoneNumberText, and change the Text property to "1-855-XAMARIN":

  12. Ziehen Sie aus der Toolbox eine Schaltfläche auf die Entwurfsoberfläche, und platzieren Sie diese unterhalb des Textfelds:Drag a Button from the Toolbox onto the design surface and place it under the Text Field. Passen Sie die Breite so an, bis die Breite der Schaltfläche mit dem Textfeld und der Bezeichnung identisch ist:Adjust the width so the Button is as wide as the Text Field and Label:

  13. Nachdem Sie die Schaltfläche auf der Entwurfsoberfläche ausgewählt haben, ändern Sie die Name-Eigenschaft im Identitäts-Teil des Eigenschaftenpad in TranslateButton.With the Button selected on the design surface, change the Name property in the Identity section of the Properties Pad to TranslateButton. Ändern Sie die Titel-Eigenschaft in „Übersetzen“:Change the Title property to "Translate":

  14. Wiederholen Sie die beiden obigen Schritte, und ziehen Sie eine Schaltfläche aus der Toolbox auf die Entwurfsoberfläche, und platzieren Sie diese unterhalb der ersten Schaltfläche.Repeat the two steps above and drag a Button from the Toolbox onto the design surface and place it under the first Button. Passen Sie die Breite solange an, bis die Breite der Schaltfläche jener der ersten Schaltfläche entspricht:Adjust the width so the Button is as wide as the first Button:

  15. Nachdem Sie die zweite Schaltfläche auf der Entwurfsoberfläche ausgewählt haben, ändern Sie die Name-Eigenschaft im Identitäts-Teil des Eigenschaftenpad in CallButton.With the second Button selected on the design surface, change the Name property in the Identity section of the Properties Pad to CallButton. Ändern Sie die Titel-Eigenschaft in „Aufruf“:Change the Title property to "Call":

    Speichern Sie die Änderungen durch Navigieren zu Datei > Speichern oder durch Drücken von ⌘+S.Save the changes by navigating to File > Save or by pressing ⌘ + s.

  16. Der App muss für die Übersetzung von Telefonnummern von alphanumerisch in numerisch eine Logik hinzugefügt werden.Some logic needs to be added to the app to translate phone numbers from alphanumeric to numeric. Fügen Sie dem Projekt eine neue Datei hinzu, indem Sie mit der rechten Maustaste auf das Phoneword_iOS-Projekt im Projektmappenpad klicken und Hinzufügen > Neue Datei... auswählen oder ⌘+N drücken:Add a new file to the Project by right clicking on the Phoneword_iOS Project in the Solution Pad and choosing Add > New File... or pressing ⌘ + n:

  17. Wählen Sie im Neue Datei-Dialogfeld Allgemein > Leere Klasse aus, und geben Sie der neuen Datei den Namen PhoneTranslator:In the New File dialog, select General > Empty Class and name the new file PhoneTranslator:

  18. Dadurch wird eine neue, leere C#-Klasse für uns erstellt.This creates a new, empty C# class for us. Entfernen Sie den gesamten Vorlagencode, und ersetzen Sie Ihn durch den Folgenden:Remove all the template code and replace it with the following code:

    using System.Text;
    using System;
    
    namespace Phoneword_iOS
    {
        public static class PhoneTranslator
        {
            public static string ToNumber(string raw)
            {
                if (string.IsNullOrWhiteSpace(raw)) {
                    return "";
                } else {
                    raw = raw.ToUpperInvariant();
                }
    
                var newNumber = new StringBuilder();
                foreach (var c in raw)
                {
                    if (" -0123456789".Contains(c)) {
                        newNumber.Append(c);
                    } else {
                        var result = TranslateToNumber(c);
                        if (result != null) {
                            newNumber.Append(result);
                        }
                    }
                    // otherwise we've skipped a non-numeric char
                }
                return newNumber.ToString();
            }
    
            static bool Contains (this string keyString, char c)
            {
                return keyString.IndexOf(c) >= 0;
            }
    
            static int? TranslateToNumber(char c)
            {
                if ("ABC".Contains(c)) {
                    return 2;
                } else if ("DEF".Contains(c)) {
                    return 3;
                } else if ("GHI".Contains(c)) {
                    return 4;
                } else if ("JKL".Contains(c)) {
                    return 5;
                } else if ("MNO".Contains(c)) {
                    return 6;
                } else if ("PQRS".Contains(c)) {
                    return 7;
                } else if ("TUV".Contains(c)) {
                    return 8;
                } else if ("WXYZ".Contains(c)) {
                    return 9;
                }
                return null;
            }
        }
    }
    

    Speichern Sie die PhoneTranslator.cs-Datei, und schließen Sie sie.Save the PhoneTranslator.cs file and close it.

  19. Fügen Sie Code hinzu, um die Benutzeroberfläche zu verknüpfen.Add code to wire up the user interface. Doppelklicken Sie dazu auf ViewController.cs im Projektmappenpad, um ihn zu öffnen:To do this double-click on ViewController.cs in the Solution Pad to open it:

  20. Verknüpfen Sie zunächst die TranslateButton.Begin by wiring up the TranslateButton. Wählen Sie in der Ansichtskontrolle-Klasse die ViewDidLoad-Methode aus, und fügen Sie den folgenden Code unter dem base.ViewDidLoad()-Aufruf hinzu:In the ViewController class, find the ViewDidLoad method and add the following code beneath the base.ViewDidLoad() call:

    string translatedNumber = "";
    
    TranslateButton.TouchUpInside += (object sender, EventArgs e) => {
        // Convert the phone number with text to a number
        // using PhoneTranslator.cs
        translatedNumber = PhoneTranslator.ToNumber(
            PhoneNumberText.Text);
    
        // Dismiss the keyboard if text field was tapped
        PhoneNumberText.ResignFirstResponder ();
    
        if (translatedNumber == "") {
            CallButton.SetTitle ("Call ", UIControlState.Normal);
            CallButton.Enabled = false;
        } else {
            CallButton.SetTitle ("Call " + translatedNumber,
                UIControlState.Normal);
            CallButton.Enabled = true;
        }
    };
    

    Schließen Sie using Phoneword_iOS; mit ein, wenn der Namespace der Datei unterschiedlich ist.Include using Phoneword_iOS; if the file's namespace is different.

  21. Fügen Sie Code hinzu, um auf den Benutzer zu reagieren, indem Sie auf die zweite Schaltfläche drücken, die den Namen CallButton besitzt.Add code to respond to the user pressing the second button, which is named CallButton. Fügen Sie den folgenden Code unter dem Code für die TranslateButton ein, und fügen Sie am Anfang der Datei using Foundation; hinzu:Place the following code below the code for the TranslateButton and add using Foundation; to the top of the file:

        CallButton.TouchUpInside += (object sender, EventArgs e) => {
            // Use URL handler with tel: prefix to invoke Apple's Phone app...
            var url = new NSUrl ("tel:" + translatedNumber);
    
            // ...otherwise show an alert dialog
            if (!UIApplication.SharedApplication.OpenUrl (url)) {
                var alert = UIAlertController.Create ("Not supported", "Scheme 'tel:' is not supported on this device", UIAlertControllerStyle.Alert);
                alert.AddAction (UIAlertAction.Create ("Ok", UIAlertActionStyle.Default, null));
                PresentViewController (alert, true, null);
            }
        };
    
  22. Speichern Sie die Änderungen, und erstellen Sie anschließend die Anwendung, indem Sie Erstellen > Alle erstellen auswählen oder ⌘+B drücken. Wenn die Anwendung kompiliert wird, wird eine Erfolgsmeldung oberhalb der IDE angezeigt:Save the changes and then build the application by choosing Build > Build All or pressing ⌘ + B. If the application compiles, a success message will appear at the top of the IDE:

    Wenn Fehler auftreten, wiederholen Sie die vorherigen Schritte, und beheben Sie alle Fehler, bis die Anwendung erfolgreich erstellt wird.If there are errors, go through the previous steps and correct any mistakes until the application builds successfully.

  23. Testen Sie schließlich die Anwendung im iOS-Simulator.Finally, test the application in the iOS Simulator. Wählen Sie oben links in der IDE Debuggen aus der ersten Dropdownliste und iPhone XR iOS 12.0 (oder einen anderen verfügbaren Simulator) aus der zweiten Dropdownliste aus, und drücken Sie Starten (die dreieckige Schaltfläche, die einer Wiedergabeschaltfläche ähnelt):In the top left of the IDE, choose Debug from the first dropdown, and iPhone XR iOS 12.0 (or other available simulator) from the second dropdown, and press Start (the triangular button that resembles a Play button):

    Hinweis

    Aktuell kann es aufgrund einer Anforderung von Apple erforderlich sein, ein Entwicklungszertifikat oder eine Signierungsidentität zu besitzen, um Code für ein Gerät oder den Simulator zu erstellen.At present, due to a requirement from Apple, it may be necessary to have a development certificate or signing identity to build you code for device or simulator. Führen Sie dazu die Schritte im Handbuch Gerätebereitstellung aus.Follow the steps in the Device Provisioning guide to set this up.

  24. Damit wird die Anwendung im iOS-Simulator gestartet.This will launch the application inside the iOS Simulator:

    Telefonanrufe werden im iOS-Simulator nicht unterstützt. Stattdessen wird beim Versuch, einen Anruf zu tätigen, ein Warnhinweis angezeigt:Phone calls are not supported in the iOS Simulator; instead, you will see an alert dialog when trying to place a call:

Visual Studio: Exemplarische VorgehensweiseVisual Studio Walkthrough

In dieser exemplarischen Vorgehensweise wird erläutert, wie Sie eine Anwendung namens Phoneword erstellen, die eine alphanumerische Telefonnummer in eine numerische Telefonnummer übersetzt.This walkthrough describes how to create an application called Phoneword that translates an alphanumeric phone number into a numeric phone number.

Hinweis

In dieser exemplarischen Vorgehensweise wird Visual Studio Enterprise 2017 auf einem virtuellen Computer mit Windows 10 verwendet.This walkthrough uses Visual Studio Enterprise 2017 on a Windows 10 Virtual Machine. Ihre Einrichtung kann sich davon unterscheiden, solange sie die oben genannten Anforderungen erfüllt, aber beachten Sie, dass einige Screenshots sich von Ihrer Einrichtung unterscheiden können.Your set up can differ from this, as long as it meets the requirements above, but be aware that some screenshots may look different to your set up.

Hinweis

Bevor Sie mit dieser exemplarischen Vorgehensweise fortfahren, müssen Sie bereits eine Verbindung von Visual Studio zu Ihrem Mac hergestellt haben.Before proceeding with this walkthrough, you must have already connected to your Mac from Visual Studio. Dies liegt daran, dass Xamarin.iOS auf die Apple-Tools zum Erstellen und Starten des iOS Designers und der Anwendungen zurückgreift.This is because Xamarin.iOS relies on Apple's tooling to build and launch the iOS Designer and applications. Führen Sie zur Einrichtung die Schritte im Leitfaden Durchführen einer Kopplung mit einem Mac aus.To get set up, follow the steps in the Pair to Mac guide.

  1. Starten Sie Visual Studio im Start-Menü:Launch Visual Studio from the Start menu:

    Erstellen Sie eine neue Xamarin.iOS-Projektmappe, indem Sie Datei > Neu > Projekt > Visual C# > iPhone & iPad > iOS-App (Xamarin) auswählen:Create a new Xamarin.iOS solution by selecting File > New > Project... > Visual C# > iPhone & iPad > iOS App (Xamarin):

    Wählen Sie den iOS-App (Xamarin)-Projekttyp ausSelect iOS App (Xamarin) project type

    Wählen Sie im nächsten Dialogfeld die Vorlage Einzelansicht-App aus, und drücken Sie OK, um das Projekt zu erstellen:In the next dialog that appears, select the Single View App template and press OK to create the project:

    Wählen Sie die Einzelansicht-Projektvorlage ausSelect Single View project template

  2. Vergewissern Sie sich, dass das Xamarin Mac Agent-Symbol auf der Symbolleiste grün ist.Confirm that the Xamarin Mac Agent icon in the toolbar is green.

    Vergewissern Sie sich, dass das Xamarin Mac Agent-Symbol auf der Symbolleiste grün ist.

    Wenn dies nicht der Fall ist, besteht keine Verbindung zu Ihrem Mac-Buildhost. Befolgen Sie dann die Schritte im Konfigurationshandbuch, um eine Verbindung herzustellen.If it isn't, this means that there is no connection to your Mac build host, follow the steps in the configuration guide to get connected.

  3. Öffnen Sie die Main.storyboard-Datei im iOS Designer durch Doppelklicken auf diese im Projektmappen-Explorer:Open the Main.storyboard file in the iOS Designer by double-clicking on it in the Solution Explorer:

  4. Öffnen Sie die Toolbox-Registerkarte, geben Sie „Bezeichnung“ in die Suchleiste ein, und ziehen Sie eine Bezeichnung auf die Entwurfsoberfläche (der Bereich in der Mitte):Open the Toolbox tab, type “label” into the search bar and drag a Label onto the design surface (the area in the center):

  5. Ziehen Sie dann die Ziehpunkte der Dragging Controls (Ziehsteuerelemente), und verbreitern Sie die Bezeichnung:Next, grab the handles of the Dragging Controls and make the label wider:

  6. Nachdem Sie die Bezeichnung auf der Entwurfsoberfläche ausgewählt haben, verwenden Sie das Eigenschaftenfenster, um die Text-Eigenschaft von der Bezeichnung in „Enter a Phoneword:“ (Phoneword eingeben) zu ändern.With the Label selected on the design surface, use the Properties Windows to change the Text property of the Label to "Enter a Phoneword:"

    Hinweis

    Sie können die Eigenschaften oder die Toolbox jederzeit durch Navigieren zum Menü Ansicht nutzen.You can bring up the Properties or Toolbox at any time by navigating to the View menu.

  7. Suchen Sie nach „Textfeld“ in der Toolbox, und ziehen Sie ein Textfeld aus der Toolbox auf die Entwurfsoberfläche, und platzieren Sie es unter der Bezeichnung.Search for “text field” inside the Toolbox and drag a Text Field from the Toolbox onto the design surface and place it under the Label. Passen Sie die Breite so an, bis die Breite des Textfelds mit jener der Bezeichnung identisch ist:Adjust the width until the Text Field is the same width as the Label:

  8. Nachdem Sie das Textfeld auf der Entwurfsoberfläche ausgewählt haben, ändern Sie die Name-Eigenschaft des Textfelds im Identitätsabschnitt der Eigenschaften in PhoneNumberText, und ändern Sie die Text-Eigenschaft in „1-855-XAMARIN“:With the Text Field selected on the design surface, change the Text Field’s Name property in the Identity section of the Properties to PhoneNumberText, and change the Text property to "1-855-XAMARIN":

  9. Ziehen Sie aus der Toolbox eine Schaltfläche auf die Entwurfsoberfläche, und platzieren Sie diese unterhalb des Textfelds:Drag a Button from the Toolbox onto the design surface and place it under the Text Field. Passen Sie die Breite so an, bis die Breite der Schaltfläche mit dem Textfeld und der Bezeichnung identisch ist:Adjust the width so the Button is as wide as the Text Field and Label:

  10. Nachdem Sie die Schaltfläche auf der Entwurfsoberfläche ausgewählt haben, ändern Sie die Name-Eigenschaft im Identitäts-Teil der Eigenschaften in TranslateButton.With the Button selected on the design surface, change the Name property in the Identity section of the Properties to TranslateButton. Ändern Sie die Titel-Eigenschaft in „Übersetzen“:Change the Title property to "Translate":

  11. Wiederholen Sie die beiden obigen Schritte, und ziehen Sie eine Schaltfläche aus der Toolbox auf die Entwurfsoberfläche, und platzieren Sie diese unterhalb der ersten Schaltfläche.Repeat the previous two steps and drag a Button from the Toolbox onto the design surface and place it under the first Button. Passen Sie die Breite solange an, bis die Breite der Schaltfläche jener der ersten Schaltfläche entspricht:Adjust the width so the Button is as wide as the first Button:

  12. Nachdem Sie die zweite Schaltfläche auf der Entwurfsoberfläche ausgewählt haben, ändern Sie die Name-Eigenschaft im Identitäts-Teil der Eigenschaften in CallButton.With the second Button selected on the design surface, change the Name property in the Identity section of the Properties to CallButton. Ändern Sie die Titel-Eigenschaft in „Aufruf“:Change the Title property to "Call":

    Speichern Sie die Änderungen durch Navigieren zu Datei > Alle speichern oder durch Drücken von STRG+S.Save the changes by navigating to File > Save All or by pressing Ctrl + s.

  13. Fügen Sie Code hinzu, um alphanumerische Telefonnummern in numerische Telefonnummern zu übersetzen.Add some code to translate phone numbers from alphanumeric to numeric. Dazu fügen Sie dem Projekt eine neue Datei hinzu, indem Sie mit der rechten Maustaste auf das Phoneword-Projekt im Projektmappen-Explorer klicken und Hinzufügen > Neue Datei... auswählen oder Ctrl + Shift + A drücken:To do this, first add a new file to the Project by right-clicking on the Phoneword Project in the Solution Explorer and choosing Add > New Item... or pressing Ctrl + Shift + A:

  14. Wählen Sie im Dialogfeld Neues Element hinzufügen (mit der rechten Maustaste auf das Projekt klicken und „Hinzufügen > Neues Element...“ auswählen) die Option Apple > Klasse aus, und nennen Sie die neue Datei PhoneTranslator:In the Add New Item dialog (right click on the project, choose Add > New Item...), select Apple > Class and name the new file PhoneTranslator:

    Wichtig

    Stellen Sie sicher, dass Sie die Vorlage „Klasse“ auswählen, die ein C# im Symbol enthält.Make sure that you select the 'class' template that has a C# in the icon. Andernfalls können Sie nicht auf diese neue Klasse verweisen.Otherwise you may not be able to reference this new class.

  15. Dadurch wird eine neue C#-Klasse erstellt.This creates a new C# class. Entfernen Sie den gesamten Vorlagencode, und ersetzen Sie Ihn durch den Folgenden:Remove all the template code and replace it with the following code:

    using System.Text;
    using System;
    
    namespace Phoneword
    {
        public static class PhoneTranslator
        {
            public static string ToNumber(string raw)
            {
                if (string.IsNullOrWhiteSpace(raw)) {
                    return "";
                } else {
                    raw = raw.ToUpperInvariant();
                }
    
                var newNumber = new StringBuilder();
                foreach (var c in raw)
                {
                    if (" -0123456789".Contains(c)) {
                        newNumber.Append(c);
                    } else {
                        var result = TranslateToNumber(c);
                        if (result != null) {
                            newNumber.Append(result);
                        }
                    }
                    // otherwise we've skipped a non-numeric char
                }
                return newNumber.ToString();
            }
    
            static bool Contains (this string keyString, char c)
            {
                return keyString.IndexOf(c) >= 0;
            }
    
            static int? TranslateToNumber(char c)
            {
                if ("ABC".Contains(c)) {
                    return 2;
                } else if ("DEF".Contains(c)) {
                    return 3;
                } else if ("GHI".Contains(c)) {
                    return 4;
                } else if ("JKL".Contains(c)) {
                    return 5;
                } else if ("MNO".Contains(c)) {
                    return 6;
                } else if ("PQRS".Contains(c)) {
                    return 7;
                } else if ("TUV".Contains(c)) {
                    return 8;
                } else if ("WXYZ".Contains(c)) {
                    return 9;
                }
                return null;
            }
        }
    }
    

    Speichern Sie die PhoneTranslator.cs-Datei, und schließen Sie sie.Save the PhoneTranslator.cs file and close it.

  16. Doppelklicken Sie auf ViewController.cs im Projektmappen-Explorer, um ihn zu öffnen, damit den Handles-Interaktionen mit den Schaltflächen eine Logik hinzugefügt werden kann:Double-click on ViewController.cs in the Solution Explorer to open it, so that logic can be added to handles interactions with the buttons:

  17. Verknüpfen Sie zunächst die TranslateButton.Begin by wiring up the TranslateButton. Wählen Sie in der ViewController-Klasse die ViewDidLoad-Methode aus.In the ViewController class, find the ViewDidLoad method. Fügen Sie den folgenden Schaltflächencode in ViewDidLoad unter dem base.ViewDidLoad()-Aufruf hinzu:Add the following button code inside ViewDidLoad, beneath the base.ViewDidLoad() call:

    string translatedNumber = "";
    
    TranslateButton.TouchUpInside += (object sender, EventArgs e) => {
    
        // Convert the phone number with text to a number
        // using PhoneTranslator.cs
        translatedNumber = PhoneTranslator.ToNumber(PhoneNumberText.Text);
    
        // Dismiss the keyboard if text field was tapped
        PhoneNumberText.ResignFirstResponder ();
    
        if (translatedNumber == "") {
            CallButton.SetTitle ("Call", UIControlState.Normal);
            CallButton.Enabled = false;
            }
        else {
            CallButton.SetTitle ("Call " + translatedNumber, UIControlState.Normal);
            CallButton.Enabled = true;
            }
    };
    

    Schließen Sie using Phoneword; mit ein, wenn der Namespace der Datei unterschiedlich ist.Include using Phoneword; if the file's namespace is different.

  18. Fügen Sie Code hinzu, um auf den Benutzer zu reagieren, indem Sie auf die zweite Schaltfläche drücken, die den Namen CallButton besitzt.Add code to respond to the user pressing the second button, which is named CallButton. Fügen Sie den folgenden Code unter dem Code für die TranslateButton ein, und fügen Sie am Anfang der Datei using Foundation; hinzu:Place the following code below the code for the TranslateButton and add using Foundation; to the top of the file:

    CallButton.TouchUpInside += (object sender, EventArgs e) => {
        var url = new NSUrl ("tel:" + translatedNumber);
    
            // Use URL handler with tel: prefix to invoke Apple's Phone app,
            // otherwise show an alert dialog
    
        if (!UIApplication.SharedApplication.OpenUrl (url)) {
                        var alert = UIAlertController.Create ("Not supported", "Scheme 'tel:' is not supported on this device", UIAlertControllerStyle.Alert);
                        alert.AddAction (UIAlertAction.Create ("Ok", UIAlertActionStyle.Default, null));
                        PresentViewController (alert, true, null);
                    }
    };
    
  19. Speichern Sie die Änderungen, und erstellen Sie anschließend die Anwendung, indem Sie Erstellen > Projektmappe erstellen auswählen oder STRG+Shift+B drücken. Wenn die Anwendung kompiliert wird, wird eine Erfolgsmeldung unterhalb der IDE angezeigt:Save the changes, and then build the application by choosing Build > Build Solution or pressing Ctrl + Shift + B. If the application compiles, a success message will appear at the bottom of the IDE:

    Wenn Fehler auftreten, wiederholen Sie die vorherigen Schritte, und beheben Sie alle Fehler, bis die Anwendung erfolgreich erstellt wird.If there are errors, go through the previous steps and correct any mistakes until the application builds successfully.

  20. Testen Sie schließlich die Anwendung im remoten iOS-Simulator.Finally, test the application in the Remoted iOS Simulator. Klicken Sie im Dropdownmenü in der IDE-Symbolleiste auf Debuggen und iPhone 8 iOS x.x, und drücken Sie Starten (das grüne Dreieck, das einer Wiedergabe-Schaltfläche ähnelt):In the IDE toolbar, choose Debug and iPhone 8 Plus iOS x.x from the drop down menus, and press Start (the green triangle that resembles a Play button):

  21. Damit wird die Anwendung im iOS-Simulator gestartet.This will launch the application inside the iOS Simulator:

    Telefonanrufe werden im iOS-Simulator nicht unterstützt. Stattdessen wird beim Versuch, einen Anruf zu tätigen, ein Warnhinweis angezeigt:Phone calls are not supported in the iOS Simulator; instead, an alert dialog will display when trying to place a call:

Herzlichen Glückwunsch, Sie haben Ihre erste Xamarin.iOS-Anwendung fertiggestellt!Congratulations on completing your first Xamarin.iOS application!

Erfahren Sie jetzt mehr über die Tools und Fähigkeiten, die Sie in diesem Handbuch kennengelernt haben, im Hello, iOS Deep Dive (Ausführliche Erläuterungen zu Hallo, iOS).Now it’s time to dissect the tools and skills shown in this guide in the Hello, iOS Deep Dive.