2011-10-13 51 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"; 
} 
相关问题