Übernahme des UIKeyInput-Protokolls, um Eingaben von einer Bluetooth-Tastatur zu erhalten

8

Ich habe einen Bluetooth-Fußschalter, der im Prinzip eine kabellose Tastatur ist. Ein Pedal sendet die Pfeiltaste nach oben, das andere sendet die Pfeiltaste nach unten. Ich möchte meinen eigenen Code in meiner iPad App ausführen können, wenn eines der Pedale gedrückt wird. Der Hersteller des Pedals teilt mir mit, dass ich eine UITextField erstellen und das Protokoll UIKeyInput in der übergeordneten UIView übernehmen und die Methoden beginningOfDocument und endOfDocument verwenden soll, um meinen Code auszuführen. Ich habe das gemacht, aber egal was ich mache, keiner der UIKeyInput oder UITextInput Methoden wird aufgerufen. Kann mich irgendjemand damit durchgehen oder mich zu einem Tutorial auf etwas Ähnlichem leiten? Gibt es einen einfacheren Weg, dies zu tun?

Danke für Ihre Hilfe.

Hier ist mein .h:

%Vor%

Und hier ist mein .m:

%Vor%     
fredwardo 14.09.2011, 03:10
quelle

3 Antworten

6

Sie haben das UIKeyInput in UIViewController übernommen. Beachten Sie die eingegebene Vererbungsdefinition:

%Vor%

Sie haben hier gesagt "Dies ist ein View-Controller, der UIKeyInput und UITextInput implementiert." Diese beiden Protokolle gelten für UIResponder -Unterklassen wie UIView und Unterklassen oder UIView . UIViewController ist nicht eine solche Klasse vielleicht nicht die beste Klasse für die Texteingabe.

View-Controller verwalten Ansichten. Sie sind keine Ansichten selbst.

Sie können (anstelle von Texteingabe-Protokollen) einfach ein verstecktes Textfeld verwenden (wie das, das Sie bereits haben). Erstellen Sie einfach eine Unterklasse von NSObject , die einen Delegaten für das Textfeld implementiert, und weisen Sie sie als Delegat des Textfelds zu. Dann, in -viewDidAppear: , rufen Sie -becomeFirstResponder im Textfeld auf, um auf das Feld zu fokussieren. Sie können wahrscheinlich einen Hack verwenden, um die Tastatur zu verstecken.

Dieser Ansatz wurde häufig in Spielen und spielunterstützenden Bibliotheken verwendet, um die Softwaretastatur anzuzeigen. Es funktioniert sogar auf iOS 3.1.3 und früher (was für Sie kein Problem ist, da Sie für das iPad entwickeln).

Falls Sie dieses Design beibehalten (Eingabe im View-Controller bearbeiten), dann ist dies möglicherweise erforderlich und sorgt dafür, dass es funktioniert.

%Vor%

Sind Sie der Auffassung mit der UITextField und einen Delegierten für den Umgang mit Eingabe oder die beiden oben genannten Funktionen der Implementierung und die UIKeyInput Protokoll in einer Unterklasse UIView .

Beachten Sie auch, dass Sie sich nicht mit UITextInput anpassen müssen, nur um Tastatureingaben zu erhalten. UIKeyInput ist genug.

Zusätzlicher Hinweis: Wenn Sie zu Unterklasse entscheiden UIView (was, zusammen mit einer versteckten UITextField verwendet, was ich tun, ich habe nicht versucht Subklassifizieren UIViewController Tastatureingabe erhalten), werden Sie wollen Fügen Sie stattdessen -becomeFirstResponder zu -awakeFromNib hinzu:

%Vor%

Wenn Sie UIViewController (und damit UIView ) von einer Nib laden. Nicht das tun? Fügen Sie das in -initWithFrame: :

hinzu %Vor%

Alternativ können Sie in% VC_de% des UIViewControllers:

%Vor%

Es gibt offensichtlich viele Möglichkeiten, wie Sie das tun können. ;)

    
Ivan Vučica 30.09.2011 16:17
quelle
2

Sehen Sie sich die Lösung an, mit der ich auf die Pfeiltasten eines Fußpedals reagiert habe:

Wie kann ich auf externe Tastatur reagieren? Pfeiltasten?

    
colincameron 07.11.2011 12:35
quelle
2

in IOS 7 ist es einfach. In früheren Versionen - nicht offiziell. Kann aus dem App Store entfernt werden.

%Vor%

Es funktioniert für mich, Hoffnung wird für Sie nützlich sein. Versionsprüfung hinzugefügt, um die Verwendung in Nicht-iOS7-Geräten zu vermeiden.

    
ETech 12.11.2013 10:39
quelle

Tags und Links