我正在尝试做什么:
在一个简单的UITableView中,我有一个包含文本和日期/时间的表单,可以编辑。我也在日期/时间单元格中使用UITextFields,因此可以使用inputView属性在键盘上显示datePicker。
问题是什么:
这个问题是这些UITextField实际上只是在选择时显示datePicker的虚拟字段。当他们被选中时,他们会显示这个恼人的蓝色光标闪烁 - 但这些只是虚拟文本字段,我不希望它们变得可见。
如果我设置alpha = 0或hidden = YES,则textField不再可点击。
解决这个问题的任何想法 - 或者是对我最初问题的不同解决方案?感谢
答案 0 :(得分:3)
我终于找到了解决问题的方法。通过隐藏UITextView,不会检测到任何触摸。但是,如果我覆盖自定义UIButton(可以是不可见的),那么我可以通过
触摸按钮时激活UITextField[myTextField becomeFirstResponder];
然后datePicker会像它应该的那样替换键盘。
答案 1 :(得分:1)
我会使用UILabel
和UItapGestureRecognizer
来了解用户何时点击标签。
只有在需要输入实际文本时才能使用文本字段控件。
告诉我,如果您需要有关手势识别器的更多帮助,它们非常易于使用并为您节省很多麻烦。
答案 2 :(得分: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";
}
答案 3 :(得分:0)
请在此处查看我的回答: Disable blinking cursor in a UITextField
这将隐藏光标,并为您提供是否向用户显示任何内容的选项。