2011-05-02 50 views
1

我希望能在一個的UITextField編輯的文字是這樣的: 「第一部分[]第二部分」的UITextField編輯部分字符串

  • 括號之間的部分應該被編輯
  • 如果我點擊文本框並輸入「foo」,它應該看起來像:「第一部分[foo]第二部分」
  • 我希望文本行爲,如果您只是在文本中間寫入
  • 用戶應該不能編輯第一部分和第二部分

我的第一種方法(經過一些搜索)是使用textViews leftView作爲「第一部分」,右側使用view作爲「第二部分」,兩者都帶有文本的uilabel子視圖。但我似乎無法獲得定位權。特別是讓它動態適應...

我在正確的軌道上?有沒有更好的方法來做到這一點?任何幫助表示讚賞,謝謝。

回答

0

要獲得中間UITextField的寬度,可以使用NSString的 - (CGSize)sizeWithFont:(UIFont *)字體並使用它來設置UITextField的大小。一旦你知道它的框架,你可以定位另外兩個UILabel的框架。

另一個選擇可能只是有一個字符串,但強制入口點在[]之間,並禁止嘗試將其設置在該範圍之外。

2

有一個在的UITextField委託協議的方法應該做的正是你想要的東西:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

如果「第一部分」和「第二部分」不改變,你可以設置範圍根據他們,即設置您的範圍的開始作爲「第一部分」的結束和您的範圍的結束是字符串的總長度減去「第二部分」的長度