UITextField
sを使用してテーブルビューを動的に作成しています。
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];
}
しかし、これは機能しません
変化する [field resignFirstResponder];
と[field becomeFirstResponder];
resignFirstResponder
は、テキストフィールドからキーボード(フォーカス)を削除するために使用されます
[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];
}
それは私にとって魅力のように働きました。
スウィフト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()
}
}