Eigene Tasten in der iOS-Tastatur mit Xamarin

Manchmal kommt es durchaus vor, dass man eigene Tasten auf der Tastatur für die Nutzung in einer App haben möchte. In Xamarin.iOS ist die Einbindung von benutzerdefinierten Tasten sehr einfach und problemlos mit nur wenigen Zeilen Code möglich.  Ein häufiges Problem unter iOS ist die fehlende „Done“-Taste zum Schließen der Tastatur. Während Android die Tastatur durch Klicken außerhalb der Tastatur schließt, macht iOS dies nicht. Zum Glück bietet UIKit eine einfache Implementierung für eigene Tasten. Darunter befindet sich auch die „Done“-Taste. Die hierbei zur Verfügung gestellte API nutzt ein zusätzliches UIView Element über der eigentlichen Tastatur. Um diese zusätzliche Leiste zu nutzen, muss lediglich die „InputAccessoryView“-Eigenschaft des entsprechenden UITextView oder UITextField Elements gesetzt werden.  Weiterlesen

Ein eigenes Event definieren und nutzen

Oft kommt es vor, dass nach dem Ausführen einer Aktion in einer Klasse andere Klassen darüber benachrichtigt werden müssen oder sollen. Hierfür gibt es in .NET Events, die bei einer bestimmten Aktion ausgelöst werden (z.B. wenn eine asynchrone Aktion durchlaufen wurde und die Daten da sind). Natürlich kann es sein, dass hier die vom .NET vorgegebenen Standardevents ausreichen, aber natürlich ist es auch möglich eigene zu definieren, denn nicht oft passen in ein fertiges .NET-Event unsere Parameter hinein. Das Ganze ist auch gar nicht mal aufwändig, denn wir müssen lediglich unseren Eventhandler definieren und das Event in unserer Klasse einbinden und natürlich irgendwo auslösen.

public delegate void CustomEventDefinitionForACustomAction(object sender, object data);

public class ExampleClass
{
    public event CustomEventDefinitionForACustomAction CustomEvent;

    public void CustomAction()
    {
        if (CustomEvent != null)
            CustomEvent.Invoke(this, new object());
    }
}

Das ist auch schon alles an Quellcode was hierfür nötig ist. Das „delegate“ definiert hierbei unseren Handler mit den Parametern. Eine Klasse, die sich anschließend auf dieses Event hängt muss eine Methode mit den gleichen Parametern bereitstellen. Das „object data“ kann natürlich hier frei definiert werden. In der Regel verwendet man hier eine spezielle „Event-Args“-Klasse. Ausgelöst wird im Beispiel das Event beim Aufrufen der „CustomAction“-Methode, nachdem es zuvor als „CustomEvent“ in der Klasse verfügbar gemacht wurde.