2009-09-03 39 views
12

我目前正在爲iPhone和iPod touch開發OpenGL ES遊戲。如何拉起沒有UITextField或UITextView的UIKeyboard?

我想知道如何輕鬆地拉起UIKeyboard? 是否有官方,記錄拉起UIKeyboard而不使用UITextView的UITextField的可能性?

+0

[如何在全屏OpenGL ES應用程序中顯示iPhone/iPad鍵盤]可能的重複(http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard- over-a-full-screen-opengl-es-app) – JosephH 2014-04-02 11:55:04

回答

14

它不是「正式」可能的 - 根據Apple的指導方針,您根本無法訪問UIKeyboard對象。

創建一個不可見的UITextField,然後調用[textField becomeFirstResponder]將完成這項工作 - 您甚至可以先創建子類UITextField,然後重寫委託方法textField:shouldChangeCharactersInRange:以將文本輸入重定向到您想要的位置。

+0

查看來自@john的更多最新答案使用3.2+ API – 2011-10-20 19:35:33

+2

__此答案現在是錯誤的___。 [看到這裏的例子如何做](http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard-over-a-full-screen-opengl-es-應用程序) – bobobobo 2013-04-07 02:39:26

0

我還沒試過,但http://www.cocoadev.com/index.pl?UIKeyboard顯示了一些看起來應該有效的代碼。

+1

我不認爲UIKeyboard在SDK中正式公開,所以也許是「合法」的,你必須使用隱藏的UITextField。 – 2009-09-03 23:40:56

+0

@David - 那麼這不可能呢? – Kriem 2009-09-04 14:08:40

+0

您發佈的代碼不起作用。儘管它可能是有效的,編譯器會讓你知道你不能訪問'UIKeyboard'類。 – FreeAsInBeer 2011-05-12 16:50:54

1

我通過我的文本框的邊框定位到可視畫面顯示的鍵盤沒有任何明顯的UITextField:

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

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

當我設置了「第一反應者」的鍵盤沒有任何明顯的輸入區域變得可見:

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

我後來放棄了這個想法。但是,我不知道它是否符合Apple準則。

19

如果您繼承了UIResponder並聲明瞭UIKeyInput協議,則當您成爲第一個響應者時,鍵盤將出現。

查看UIKeyInput protocol here

讓我感到沮喪的一件事是您需要重寫canBecomeFirstResponder消息。

+1

只有'UIView'子類,不只是_any_ UIResponder子類。我試圖讓我的AppDelegate(一個UIResponder)子類,顯示一個鍵盤並失敗。 – paulvs 2015-05-06 20:43:14

+0

「UIView」的子類之後,「UITextfield」有什麼不同?他們都必須添加到屏幕上,然後成爲第一響應者,顯示鍵盤。 – al03 2017-05-11 10:20:05

3

確實有可能。我本人在這方面掙扎很多。 UIKeyInput協議可用於在不使用UITextField或UITextView的情況下拖動鍵盤。不過,它僅適用於iOS 3.2及更高版本。這是一個tutorial

希望有所幫助。

相關問題