web-dev-qa-db-fra.com

Définir la mise au point sur Uitextfield à la nappe

Je crée une vue de table avec UITextFields 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

24
nabiullinas

monnaie [field resignFirstResponder]; avec [field becomeFirstResponder];

resignFirstResponder est utilisé pour supprimer le clavier (focus) du champ de texte

60
Saurabh

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.

1
mxmlc

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()
        }
}
0
yousaf nisar