1

我创建了一个自定义单元格,它将 UITextField 放置在 UITableView 的每一行中。当用户按下单元格内的任何位置时,我想做的是为特定行启用 UITextField(即激活该文本字段中的光标)。

我有以下方法尝试执行此操作:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

     [_cell.textField setUserInteractionEnabled:TRUE];

}

但是,这是行不通的。谁能看到我做错了什么?

4

3 回答 3

1

这是什么_celliVar?你在某个地方设置它吗?

我认为您要完成的是:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
     [cell.textField becomeFirstResponder];
}

请注意,通过这种方式,您将获得点击的 indexPath 的单元格。

而且,仅供参考,objective-C 中的一种模式是使用布尔值作为YESor NO,而不是trueor false

于 2013-08-12T20:37:06.113 回答
1

试试这个代码:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

     [_cell.textField becomeFirstResponder];
}
于 2013-08-12T20:34:15.967 回答
1

您将其放置在 didSelectRowAtIndexPath: 中是正确的。但是,在文本字段上启用用户交互仅意味着如果用户尝试,将允许用户与对象进行交互。您正在寻找 becomeFirstResponder。

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    [cell.textField becomeFirstResponder];
}
于 2013-08-12T20:34:34.180 回答