2011-10-13 108 views
1

我想要做的事:iPhone:如何使UITextField不可見但仍可點擊?

在一個簡單的UITableView,我得到了與文本和可編輯的日期/時間的一種形式。我在日期/時間單元格中也使用了UITextFields,因此inputView屬性可以用來在鍵盤上顯示一個datePicker。

的問題是什麼:

這樣做的問題是,這些UITextFields其實只是虛擬字段選擇時,顯示一個日期選擇器。當他們被選中時,他們會顯示這個惱人的藍色光標閃爍 - 但這些只是虛擬文本字段,我不希望它們變得可見。

如果我設置了alpha = 0或hidden = YES,那麼textField不再是可點擊的。

解決方案的任何想法 - 或者,我的最初問題的不同解決方案?謝謝

+1

是否將α設置爲「0.01」? – chown

+0

爲什麼你在鍵盤上顯示datePicker作爲inputView?爲什麼不提供隱藏鍵盤後啓動選取器視圖的按鈕? – Akshay

+0

@Akshay @Akshay因爲這不是我設計它的工作原理 - 我確切地知道我希望如何使用界面,並通過隱藏鍵盤/點擊額外的按鈕它會使我的界面變得糟糕:) –

回答

3

我終於想出了一個辦法。通過隱藏UITextView,不會檢測到觸摸。但是,如果我疊加一個自定義的UIButton(這可以是無形的),那麼我可以激活的UITextField當按鈕通過

[myTextField becomeFirstResponder]; 

感動,然後將日期選擇器更換鍵盤就像它應該。

1

我會使用UILabelUItapGestureRecognizer知道用戶何時點擊標籤。

僅當需要實際文本輸入時才應使用文本字段控件。

告訴我如果您需要手勢識別器的更多幫助,它們非常易於使用併爲您節省很多麻煩。

+0

使用UITextField的要點是它有一個'inputView'屬性,解決了UIKeyboard隱藏UIDatePicker的問題。否則,這是我會做的。 –

1

要使用文本字段的「inputView」屬性,請將文本字段覆蓋在標籤頂部。然後只需隱藏並顯示textFieldDid *方法中的文本字段,但在標籤中顯示實際的顯示值。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    .... 
    [cell.contentView addSubview:myLabel]; 
    [cell.contentView addSubview:myTextField]; 
    .... 
} 

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    if (textField == self.myTextField) { 
     [textField setHidden:YES]; 
    } 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    if (textField == self.myTextField) { 
     [textField setHidden:NO]; 
    } 
} 

- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    self.myLabel.text = @"Set value here"; 
} 
相關問題