2012-01-11 87 views
7

確定我已經看了看,並且我想我缺少一些關於自定義鍵盤和將文本插入UITextField的內容。像許多人一樣,我正在用自己的一套鑰匙帽在自定義UIButtons上創建一個UIView自定義鍵盤。然後,我將這個視圖分配給UITextField的inputView,然後當該文本字段成爲第一響應者時,彈出我的鍵盤。鍵盤內部捕捉按鈕動作並將其轉換爲按鍵動作。iOS製作自定義鍵盤爲UITextField生成標準擊鍵

但是從這裏我很困惑如何最好地發送我的按鍵到文本字段。我已經看到很多例子,如iOS Custom Keyboard Updating Text Field In Parent ViewReturn Inputs To UITextfield With Custom InputviewHow To Push Key Value Into UITextView From Custom Keyboard In iOS,其中解決方案似乎是在自定義視圖內嵌入指向目標UITextField的指針。

對於我來說這看起來不太合適,對於多個UITextFields,無論何時只要新文本字段成爲第一響應者,我必須手動更改單個自定義鍵盤上的引用,或者必須隨身攜帶一個匹配的自定義鍵盤爲每個我想支持的文本字段。

在我看來,鍵盤應該只是將觸摸轉換成令牌並將這些令牌發送到接收它們的人(第一響應者?)的解釋。 iPad For iPhone Developers 101 Custom Input View Tutorial似乎這樣做,但創建一個自定義協議來這樣做。我想象(實際上是一種SWAG - 科學野性猜測)標準iOS鍵盤可以像這樣操作,但是使用特定的協議來傳遞鍵擊。所以我想要做的就是手動生成與標準鍵盤相同的事件/消息鏈。

那麼我該如何做到這一點?或者我甚至可以用公共API來做到這一點?或者是標準鍵盤的操作與UITextField綁定得太緊?

+0

我知道這個問題很老,但我創建了一個完整的,有效的開源示例,說明如何做到這一點叫做數字鍵盤,並將它放在[Github]上(https://github.com/lnafziger/Numberpad ) – lnafziger 2013-07-08 04:36:50

回答

1

這是一個非常開放的問題。真的,這取決於你選擇你想要的東西。 Apple's documentation陳述如下:

輸入視圖和輸入附件視圖的子視圖可以是任何你想要的。如果它們是按鈕或其他控件,則需要爲每個控件指定目標和操作,並實現相關操作方法以執行數據輸入或操作。

您也可以製作一個UITextField子類,並明確實現inputView的getter以返回指向您的自定義鍵盤視圖類的指針。在這個getter中,你可以像之前建議的那樣設置一個類似UIControl的目標/操作系統。這樣做不需要從外部設置自定義鍵盤 - 這些都是在內部處理的。它也將該代碼放入一個地方。

一旦自定義文本字段的第一個響應者辭職,您可以將文本字段的指針從鍵盤中刪除。

+0

從某種意義上說,我要求的是Apple Docs的狀態 - 實現數據輸入的方法。在這種情況下,我希望這些方法能夠模擬標準的方法,這樣我就可以用最少的代碼更改(即設置或不設置inputView)來交換我的鍵盤。由於其他原因,子類化UITextField在我的列表中(並且在這種情況下也是我的後備),但我仍然認爲在子類中的UITextField指針進行混洗是手動操作,並且它冒犯了我在消息傳遞環境中這樣做能夠做我想做的事。 – 2012-01-12 12:55:08

+0

我認爲你正在將自定義鍵盤功能變成不是的東西。自定義鍵盤只是一個視圖。這不是蘋果專用鍵盤框架的一個特殊子類(一個大而複雜的東西),它可以讓你連接到他們的系統。試想一下,如果您製作了一個自定義鍵盤,用戶不會按按鈕輸入文本,而是繪製圖片。蘋果的內部密鑰轉發代碼如何將這些數據發送到文本字段? – pe8ter 2012-01-13 03:22:57

0

我是新來的iOS,所以請原諒我,如果我說的沒有任何意義(請友善地糾正我)。 :D

您的自定義鍵盤沒有辦法通過主UIView中的所有UITextField尋找FistResponder並將其消息發送到FirstResponder?我的意思是,UIView有一個子視圖屬性,您可以在其中查找UITextFields並使用[UITextField isFirstResponder]屬性查找FirstResponder。那麼,你可以使用這個對象嗎?

再一次,我很抱歉,如果這沒有任何意義,但我也對這個線程非常感興趣,並想貢獻一點。

+0

我明白你在說什麼,但我不確定它比我所做的更好。我已經必須明確地將自定義鍵盤的具體實例分配給特定的文本字段。所以對我來說,Rube Goldberg有點讓鍵盤本身通過視圖堆棧進行搜索以找到第一個響應者。對我而言,缺少的是讓鍵盤明確地知道它所綁定的文本字段。 – 2012-02-11 14:55:31