在我自定義表格單元格我想告訴喜歡「輸入你的名字」,當用戶開始編輯我想要的細胞,其文本在那裏停留和不可編輯在我的UITextField一些默認的文本,編輯從默認文本結束處開始。我能輕鬆做到這一點嗎?iPhone:的UITextField默認文本問題
我可以通過在左側放置一個標籤和在右側放置一個文本框來實現這一點,但是接下來我必須計算每次默認文本的多長時間(對於每個字段可以不同)以及自定義創建文本框這lenght到格格不入。
有什麼建議?
在我自定義表格單元格我想告訴喜歡「輸入你的名字」,當用戶開始編輯我想要的細胞,其文本在那裏停留和不可編輯在我的UITextField一些默認的文本,編輯從默認文本結束處開始。我能輕鬆做到這一點嗎?iPhone:的UITextField默認文本問題
我可以通過在左側放置一個標籤和在右側放置一個文本框來實現這一點,但是接下來我必須計算每次默認文本的多長時間(對於每個字段可以不同)以及自定義創建文本框這lenght到格格不入。
有什麼建議?
我有標籤計算大小。只需設置標籤的文本,然後將標籤尺寸設置爲合適的尺寸,然後將UITextField滑動到標籤的邊緣。如果標籤文字中有空格,它看起來很棒。
事情是這樣的:
UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 550.0, 28.0)];
[nameLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:24.0]];
[nameLabel setText:@"Name: "];
[nameLabel sizeToFit];
[self addSubview:nameLabel];
[nameLabel release];
UITextField *nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(nameLabel.frame.size.width + nameLabel.frame.origin.x, 0.0, 550.0 - nameLabel.frame.size.width, nameLabel.frame.size.height)];
編輯回答關於特殊情況的評論:在特殊情況下,如很長的標籤,你就必須添加額外的代碼。例如,你可以檢查sizeToFit
調用後的寬度,如果超過一定的寬度,重建與多條線路的標籤,更小的字體,等不幸的是,如果你需要考慮特殊情況下,你必須做一些額外編碼工作。
由於您使用的是UITextField
,因此您可以掛入UITextFieldDelegate
delegate methods以檢查處於不同狀態的文本字段的文本。例如,當UITextField
變爲可編輯時,以及每當文本字段中的文本發生更改時。您可能會感興趣的
兩個是:
- (void)textFieldDidBeginEditing:(UITextField *)textField
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
使用這些,你可以輕鬆擁有placeholder
財產UITextField
包含你喜歡的任何文字來使用,那麼當用戶開始編輯的字段,有textFieldDidBeginEditing:
中填入佔位符文本文本字段的文本,然後監視在用textField:shouldChangeCharactersInRange:replacementString:
用戶輸入不讓用戶刪除手動輸入已經爲他們的佔位符文本的每個字符的文本。
TNX這看起來非常有幫助,但如果有時標籤文字很長,這些時間我想它調整其字體或截斷線,以允許進行文字輸入一些空間呢? – Spring
我可以在筆尖設計這個標籤,然後在代碼中覆蓋嗎? – Spring
是的,您可以在Interface Builder中設置界面元素,然後使用代碼中的setFrame和sizeToFit等方法來調整它們,只要將它們連接到IBOutlets即可。 –