2009-09-03 8 views
12

Obecnie rozwijam grę OpenGL ES na iPhone'a i iPoda touch.Jak podnieść tablicę UIKeyboard bez UITextField lub UITextView?

Zastanawiam się, jak mogę łatwo podnieść tablicę UIKeyboard? Czy istnieje oficjalna, udokumentowana możliwość podciągnięcia tablicy UIKeyboard bez użycia UITextField z UITextView?

+0

możliwy duplikat [Sposób wyświetlania klawiatury iPhone/iPad na pełnym ekranie aplikacji OpenGL ES] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard- over-a-full-screen-opengl-es-app) – JosephH

Odpowiedz

14

Nie jest to "oficjalnie" możliwe - w ogóle nie można uzyskać dostępu do obiektu UIKeyboard, pozostając w wytycznych Apple.

Utworzenie niewidocznego interfejsu UITextField, a następnie wywołanie [textField becomeFirstResponder] może wykonać zadanie - można nawet wykonać podklasę UITextField, a następnie zastąpić metodę delegowania textField:shouldChangeCharactersInRange:, aby przekierować dane wejściowe tekstu do miejsca, w którym ma się znaleźć.

+0

Zobacz bardziej aktualną odpowiedź z @john, używając 3.2+ API –

+2

__ Ta odpowiedź jest teraz błędna__. [Zobacz tutaj, aby dowiedzieć się, jak to zrobić] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard-over-a-full-screen-opengl-es- app) – bobobobo

0

Nie próbowałem, ale http://www.cocoadev.com/index.pl?UIKeyboard pokazuje, że kod, który wygląda tak, jak powinien działać.

+1

Nie sądzę, że UIKeyboard jest oficjalnie ujawniony w SDK, więc być może "legalne" musisz użyć ukrytego UITextField. –

+0

@ David - Więc to nie jest możliwe? – Kriem

+0

Kod, który wysłałeś, nie działa. Chociaż może być ważny, kompilator powiadomi Cię, że nie możesz uzyskać dostępu do klasy 'UIKeyboard'. – FreeAsInBeer

1

ja wyświetlona klawiatura bez jakichkolwiek widocznych UITextField poprzez umieszczenie ramki mojego textField jest z widocznym ekranie:

#define TEXT_FRAME     -50,-50,0,0 

self.textField = [[UITextField alloc] initWithFrame:CGRectMake(TEXT_FRAME)]; 

Kiedy ustawić „first responder” klawiatura staje się widoczna bez widocznego obszaru wejściowego:

// show the keyboard  
[self.textField becomeFirstResponder]; 

Później porzuciłem pomysł. Jednak nie znam jego zgodności z wytycznymi Apple.

19

Jeśli używasz podklasy UIResponder i deklarujesz protokół UIKeyInput, klawiatura pojawi się, gdy staniesz się pierwszą osobą bez Odpowiedzialności.

Zobacz UIKeyInput protocol here.

Jedna rzecz, która mnie potknęła, to konieczność nadpisania komunikatu canBecomeFirstResponder.

+1

Tylko podklasy 'UIView', nie tylko _any_ podklasa UIResponder. Próbowałem zrobić moją podklasę AppDelegate (UIResponder), pokazać klawiaturę i nie udało się. – paulvs

+0

Po podklasie 'UIView', jaka jest różnica między' UITextfield'? wszystkie muszą być dodane do ekranu, następnie stać się pierwszą odpowiedzią, pokazać klawiaturę. – al03

3

Jest to rzeczywiście możliwe. Miałem z tym dużo problemów. Do wyciągnięcia klawiatury bez użycia UITextField lub UITextView można użyć protokołu UIKeyInput. Jest on jednak dostępny tylko w systemie iOS 3.2 i nowszych wersjach. Tutaj jest tutorial na ten temat.

Nadzieję, że pomaga.

Powiązane problemy