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

时间:2011-10-13 03:07:31

标签: iphone objective-c ios uitextfield

我正在尝试做什么:

在一个简单的UITableView中,我有一个包含文本和日期/时间的表单,可以编辑。我也在日期/时间单元格中使用UITextFields,因此可以使用inputView属性在键盘上显示datePicker。

问题是什么:

这个问题是这些UITextField实际上只是在选择时显示datePicker的虚拟字段。当他们被选中时,他们会显示这个恼人的蓝色光标闪烁 - 但这些只是虚拟文本字段,我不希望它们变得可见。

如果我设置alpha = 0或hidden = YES,则textField不再可点击。

解决这个问题的任何想法 - 或者是对我最初问题的不同解决方案?感谢

4 个答案:

答案 0 :(得分:3)

我终于找到了解决问题的方法。通过隐藏UITextView,不会检测到任何触摸。但是,如果我覆盖自定义UIButton(可以是不可见的),那么我可以通过

触摸按钮时激活UITextField
[myTextField becomeFirstResponder];

然后datePicker会像它应该的那样替换键盘。

答案 1 :(得分:1)

我会使用UILabelUItapGestureRecognizer来了解用户何时点击标签。

只有在需要输入实际文本时才能使用文本字段控件。

告诉我,如果您需要有关手势识别器的更多帮助,它们非常易于使用并为您节省很多麻烦。

答案 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

这将隐藏光标,并为您提供是否向用户显示任何内容的选项。