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

Jas*_*ien 48 cocoa-touch uitableview uitextfield first-responder ios

我有一个UITextField是a的子视图UITableViewCell.

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

[myTextField becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

Jas*_*ien 43

事实证明,当我试图将它发送给第一响应者时,文本字段为零.becomeFirstResponder在生命周期的后期发送工作.


Jim*_*des 9

我在一个文本字段中遇到了同样的问题,我将其作为子视图添加到了一个分组的表格视图单元格中 - 但在经过一些探讨之后想出了一个解决方案.

假设您已在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];
}
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

   //... any other code you need 
}
Run Code Online (Sandbox Code Playgroud)