Je crée une vue de table avec UITextField
s dynamiquement.
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];
Et maintenant, je veux mettre l'accent sur ce champ de texte lorsque l'utilisateur touche la cellule. J'écris ceci
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath {
UITextField* field = (UITextField *) [tblView viewWithTag: newIndexPath.row];
[field resignFirstResponder];
}
Mais cela ne fonctionne pas
monnaie [field resignFirstResponder];
avec [field becomeFirstResponder];
resignFirstResponder
est utilisé pour supprimer le clavier (focus) du champ de texte
J'ai fait face au même problème ici, même en utilisant correctement le [field becomeFirstResponder];
.
J'ai également utilisé des balises pour obtenir les objets que j'ai à l'intérieur de la cellule. Votre didSelectRowAtIndexPath
devrait ressembler à ceci pour obtenir la bonne cellule:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
currentRow = indexPath.row;
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UITextField *indexField = (UITextField *)[cell viewWithTag:101];
[indexField becomeFirstResponder];
}
Cela a fonctionné comme un charme pour moi.
Swift 3
myTextField.becomeFirstResponder()
Mon code. Prenez le chemin de l'index de la cellule actuelle. Et obtenir une cellule de Next indexPath.row. Et appelé ** cellules1.txtfindings.becomefiresponder () **
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()
}
}