2009-12-11 120 views
1

我有一個始終格式爲「XX0000000XX」的文本字段,其中X是一個字母,0是一個數字。我根據用戶是否需要輸入數字或字母來切換鍵盤。如何確定UITextField的光標位置?

工作正常,直到用戶將光標置於文本字段的中間以進行編輯。我如何確定UITextField中的光標位置?

我知道一個UITextView有一個selectedRange可以使用,但我讀過,你不能強制UITextView單線條目?即禁用多行文本。

+0

下面的兩個答案都不適合這種情況(雖然他們都有一些優點 - 謝謝!)。我向蘋果發送了一個bug,重新檢測光標位置,客戶很高興按照現在的方式運行它。唷。請讓我知道,如果你有一個解決方案,允許檢測到光標位置。 – 2009-12-12 03:38:48

+0

請讓我們知道蘋果何時會迴應該錯誤。 ;) – SNR 2011-03-14 05:30:38

回答

0

聰明的鍵盤。我的直接想法是,也許你不應該讓用戶首先移動光標。

這在iPhone UI中並非沒有先例。例如,電話小鍵盤視圖將用戶限制爲順序輸入。我還發現這種技術對貨幣輸入很有用。基本上,輸入具有非常嚴格的語法的任何地方似乎都是這種治療的候選人。可能適合你的情況。

不知道這是最好的方法,但在這裏就是我如何做到這一點:

爲UITextField捕獲輸入和一個UILabel顯示輸入。文本字段是隱藏的,但會被髮送到第一個應答器以觸發鍵盤。當用戶鍵入時,委託方法會根據需要(如使用貨幣)來格式化文本,並更新UILabel,從而爲用戶提供有關其輸入的反饋。

根據情況,您可能希望以這樣一種方式設置UILabel的樣式,使得用戶無法像使用可選文本字段那樣使用它,同時讓他們確信它實際上是它們的輸入。

隨着比賽11個字符,我可以看到光標編輯如何可能是有用的。不過,電話號碼通常在相同的範圍內,我從來沒有在電話應用程序中的順序編輯器的問題。

0

有一個UITextDelegate方法-textField:shouldChangeCharactersInRange:replacementString:這應該是你需要做你所描述的。實施它來執行你想要的任何格式化規則。你不應該關心光標在哪裏,只是建議的變化範圍。