将焦点设置为tableCell中的UITextField

时间:2012-01-16 17:19:09

标签: ios events uitableview uitextfield

我正在动态创建一个包含UITextField的表格视图。

l_textField = [[UITextField alloc] initWithFrame:TextFieldFrame];
l_textField.tag = cellRow;

l_textField.delegate = self;
l_textField.font = [UIFont boldSystemFontOfSize:14];
l_textField.textColor = [UIColor blackColor];
[l_textField setEnabled:YES];

[cell.contentView addSubview:l_textField];

现在我想在用户触摸单元格时将焦点设置在此文本字段上。我写这个

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
    UITextField* field = (UITextField *) [tblView viewWithTag: newIndexPath.row];
    [field resignFirstResponder];
}

但这不起作用

3 个答案:

答案 0 :(得分:60)

使用[field resignFirstResponder];

更改[field becomeFirstResponder];

resignFirstResponder用于从文本字段中删除键盘(焦点)

答案 1 :(得分:1)

我在这里遇到了同样的问题,即使正确使用了[field becomeFirstResponder];

我还使用标签来获取单元格内的对象。你的didSelectRowAtIndexPath应该是这样的,以获得正确的单元格:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    currentRow = indexPath.row;

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    UITextField *indexField = (UITextField *)[cell viewWithTag:101];
    [indexField becomeFirstResponder];
}

它对我来说就像一个魅力。

答案 2 :(得分:0)

  

Swift 3

myTextField.becomeFirstResponder()
  

我的代码。获取当前单元格的索引路径。并获取下一个indexpath.row的单元格。并呼吁   ** cell1.txtFindings.becomeFirstResponder()**

  if  let textFieldIndexPath = specsListView.indexPath(for: cell){
        let newIndexPath = IndexPath(row: textFieldIndexPath.row + 1, section: 0)

        if let cell1: SpecsTableViewCell = specsListView.cellForRow(at: newIndexPath) as? SpecsTableViewCell{
            cell1.txtFindings.becomeFirstResponder()
        }
}