web-dev-qa-db-ja.com

tableCellでフォーカスをUITextFieldに設定します。

UITextFieldsを使用してテーブルビューを動的に作成しています。

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];
}

しかし、これは機能しません

24
nabiullinas

変化する [field resignFirstResponder];[field becomeFirstResponder];

resignFirstResponderは、テキストフィールドからキーボード(フォーカス)を削除するために使用されます

60
Saurabh

[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];
}

それは私にとって魅力のように働きました。

1
mxmlc

スウィフト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()
        }
}
0
yousaf nisar