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% Sie haben das UIKeyInput
in UIViewController
übernommen. Beachten Sie die eingegebene Vererbungsdefinition:
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:
Wenn Sie UIViewController
(und damit UIView
) von einer Nib laden. Nicht das tun? Fügen Sie das in -initWithFrame:
:
Alternativ können Sie in% VC_de% des UIViewControllers:
%Vor%Es gibt offensichtlich viele Möglichkeiten, wie Sie das tun können. ;)
Sehen Sie sich die Lösung an, mit der ich auf die Pfeiltasten eines Fußpedals reagiert habe:
Tags und Links objective-c ios ipad subclass