2010-12-08 11 views
10

Ich kenne nur wenige Möglichkeiten, eine Tastatur auf iOSWie zeigt man eine Tastatur über einen NSButton?

Touch Textfeld, Suchleiste zu zeigen, Textview .....

Ist es über Touch kann eine Taste Tastatur zeigen ???

Ich möchte, dass ich auf diese Weise einen Button tittle setzen kann, wenn der Button kein Titel ist oder ihn umbenennen kann.

Danke Jungs ~

+0

Im Grunde müssen Sie ein Steuerelement erstellen, das Ersthelfer werden kann und UITextTraits implementiert, und wenn dieses Steuerelement zum Ersthelfer wird, zeigt die Tastatur an, ob es bereits angezeigt wird. –

Antwort

14

Sie benötigen ein UITextField zu Ihrer Ansicht hinzuzufügen und dann [myTextfield becomeFirstResponder]; Es ist möglich, rufen Sie die versteckt attrribute von UITextField zu YES setzen - so wird der Benutzer nie das Textfeld sehen. Nachdem die Tastatureingabe beendet ist, können Sie die UITextField mit removeFromSuperview entfernen.

Vielleicht ein bisschen schmutzig, aber das ist die Lösung, die ich oft verwendete. Ich frage mich, ob das SDK eine andere Möglichkeit bietet.

+0

Ich weiß nicht ... vielleicht kann ich ein Textfeld in eine Schaltfläche einfügen und es verstecken –

+0

Muss nicht - es kann auch anderswo in Ihrer Sicht sein! Wichtig ist nur, dass Sie beim Klicken auf den Button "findResponse" aufrufen - dann erscheint die Tastatur. Sie können den Schaltflächentext dynamisch ändern (d. H. Mithilfe des UITextFieldDelegate-Protokolls). – Constantin

+0

Es gibt eine bessere Lösung unten mit UIKeyInput-Protokoll. – wzbozon

3

Sie benötigen eine Eingabemethode wie UITextField, in der Sie einen Namen für Ihre Schaltfläche eingeben können. Wenn Sie möchten, können Sie eine UIButton erstellen, die das Textfeld zeigt (haben sie standardmäßig ausgeblendet) und macht es Ersthelfer, indem Sie:

textField.hidden = NO; 
[textField becomeFirstResponder]; 

Sobald Sie etwas, was Sie wollen in Ihrem Textfeld eingeben, können Sie es So verschwindet die Tastatur, das Textfeld ist ausgeblendet und der Text UIButton wird in den eingegebenen Text geändert.

-(BOOL)textFieldShouldReturn:(UITextField*)textField; { 
textField.hidden = YES; 
[textField resignFirstResponder]; 
[yourButton setTitle:textField.text forState:UIControlStateNormal]; 
} 
+0

Was ist, wenn ich nicht über Textfeld Ihr Textfeld möchte.Versteckt = Nein, das bedeutet, dass der Benutzer das Textfeld sehen wird.Keine Lösung, um dies zu verbergen, oder nicht das Textfeld zu verwenden? –

+0

Sie könnten das Textfeld durch Ändern des Rands schwer sichtbar machen. –

5

Die Dokumentation für die UIKeyInput protocol sagt der folgende:

Eine Unterklasse von UIResponder dieses Protokoll annehmen können einfache Texteingabe zu implementieren. Wenn Instanzen dieser Unterklasse der erste Responder sind, wird die Systemtastatur angezeigt.

Für Klassen, die dieses Protokoll verwenden, steht nur eine kleine Teilmenge der verfügbaren Tastaturen und Sprachen zur Verfügung.

So könnte dies Ihre Bedürfnisse besser als ein verstecktes Textfeld/Ansicht dienen.

+0

Perfekte Lösung. Es funktioniert und Sie müssen nur ein Protokoll zu Ihrer Klasse hinzufügen. @interface UIBubbleTableViewCell: UITableViewCell wzbozon

+1

Großartig. Nur um zu helfen: Sie brauchen Ihre Klasse, um "canBecomFirstResponder" zu überschreiben und geben Sie YES zurück, um dies zum Laufen zu bringen, sowie insertText, hasText und deleteBackward zu implementieren. – narco

Verwandte Themen