iPhone:如何使UITextField不可见但仍可点击?

我在做什么:

在一个简单的UITableView中,我有一个可以编辑的文本和date/时间的表单。 我在date/时间单元格中也使用了UITextFields,所以inputView属性可以用来在键盘上显示一个datePicker。

问题是:

这个问题是,这些UITextFields真的只是虚拟的领域,select时显示一个datePicker。 当他们被选中时,他们会显示这个恼人的蓝色光标闪烁 – 但这些只是虚拟文本字段,我不希望他们变得可见。

如果我设置了alpha = 0或hidden = YES,那么textField不再是可点击的。

任何想办法解决这个问题 – 或者,解决我最初的问题? 谢谢

我终于想出了一个办法。 通过隐藏UITextView,不会检测到触摸。 但是,如果我叠加一个自定义的UIButton(这可以是不可见的),那么我可以激活UITextField当button被触摸

 [myTextField becomeFirstResponder]; 

然后datePicker将像它应该更换键盘。

我将使用带有UItapGestureRecognizerUILabel来知道用户何时点击标签。

只有在需要实际文本input的情况下才能使用文本字段控件。

告诉我,如果你需要更多的手势识别器的帮助,他们很容易使用,并为您节省了很多麻烦。

要使用文本字段的“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"; } 

在这里看到我的答案: 禁用UITextField中的闪烁光标

这将隐藏光标,并给你select是否显示任何东西给用户。