2010-11-26 6 views
6

Ich habe eine Ansicht, die Kopie und zeigt das Menü Bearbeiten mit dem folgenden Code unterstützt:becomeFirstResponder ohne Tastatur versteckt

if ([self becomeFirstResponder]) { 
    // bring up edit menu. 
    UIMenuController *theMenu = [UIMenuController sharedMenuController]; 
    [theMenu setTargetRect:[self _textRect] inView:self]; 
    [theMenu setMenuVisible:YES animated:YES]; 
} 

Das Problem ist, dass, wenn becomeFirstResponder, die verborgene Tastatur get aufgerufen wird. Ein gutes Beispiel für das richtige Verhalten ist in der SMS-App. Doppeltippen Sie auf eine Nachricht, während das Antwortfeld sichtbar ist und die Antwortbox den Fokus verliert, aber die Tastatur bleibt an Ort und Stelle. Wenn die Blase deaktiviert ist, wird die Antwortbox wieder scharf.

Antwort

5

Leider kann Apple viele Dinge tun, die für Anwendungen von Drittanbietern nicht verfügbar sind.

Ich glaube, was Sie wollen, ist in iOS 3.2 + möglich, wenn Sie die Ansicht machen, dass der Erstanwender Tastatureingabe akzeptieren soll. Sie tun das Ihrer Ansicht Klasse annehmen, indem die UIKeyInput protocol:

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

Das Protokoll besteht aus 3 erforderlichen Methoden, die Sie implementieren müssen. In Ihrem Fall würden Sie wahrscheinlich die Eingaben, die Sie in diesen Methoden erhalten, auf Ihr Textfeld anwenden und es zum Ersthelfer machen. Ich habe das nicht versucht, aber es sollte funktionieren.

+0

Ich habe das versucht. Ich habe die 3 Methoden implementiert und es hat immer noch den blinkenden Cursor im Textfeld. –

+0

Diese Antwort ist falsch. Die Lösung funktioniert nicht. Ich weiß nicht, warum es Stimmen hat. – RaffAl

+0

Danke! Durch die Implementierung des UIKeyInput-Protokolls wurde die Tastatur beibehalten. –