在嵌入UITableViewCell时告诉UITextField成为第一响应者

时间:2009-11-14 00:42:16

标签: ios uitableview cocoa-touch uitextfield first-responder

我有一个UITextFieldUITableViewCell的子视图。

当我的视图加载时,我希望文本字段成为第一响应者。我有一个指向表格单元格中文本字段的指针,所以要这样做我正在尝试:

[myTextField becomeFirstResponder];

这会一直返回NO,无论何时被调用,根据文档意味着文本字段被拒绝成为第一响应者......我做错了什么?

编辑:

textfield正确回应被触摸。它然后调出键盘。只有在以becomefirstresponder以编程方式告知问题发生时才会这样做。

5 个答案:

答案 0 :(得分:43)

事实证明,当我试图向第一响应者发送时,文本字段为零。 在生命周期的后期发送becomeFirstResponder

答案 1 :(得分:8)

我遇到的问题与我作为子视图添加到分组表格视图单元格的文本字段有关 - 但是在经过一些探讨之后想出了一个解决方案。

假设您已在cellForRowAtIndexPath方法中为textfield指定了标记,则可以执行以下操作:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

myTextField = (UITextField *)[cell viewWithTag:kMyTextFieldTag];
[myTextField becomeFirstResponder];
}

答案 2 :(得分:5)

在 - (void)viewDidLoad中调用它会起作用。

-(void)viewDidLoad{
   [super viewDidLoad];
   // Do any additional setup after loading the view.
   [self.myTextField becomeFirstResponder] 

   //... any other code you need 
}

答案 3 :(得分:1)

UITextField内的cellForRowAtIndexPath成为第一响应者时,我没有让光标显示出来。文本字段可以正常工作,但它没有在字段内显示闪烁的光标。当您按住时,缩放放大也不会显示光标。

我通过在becomeFirstResponder方法中设置didSelectRowAtIndex来解决这个奇怪的问题。

答案 4 :(得分:0)

您的UITableView editing属性是否设置为YES