J'ai un UITextView dans une cellule UITableView. J'ai été incapable de faire démissionner systématiquement le clavier après l'édition. La détection de DidEndEditing n'a pas fonctionné. Ajouter mon propre bouton "done" à la barre d'outils apporte des résultats intermittents. Conseil? (Remarque: Ceci est UITextView pas UITextField.Merci)Je ne parviens pas à résilier le clavier de manière cohérente avec UITextView dans UITableViewCell
Je ne parviens pas à résilier le clavier de manière cohérente avec UITextView dans UITableViewCell
Répondre
ajouter le textview à la cellule:
cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
managedTextView = [[[UITextView alloc] initWithFrame:CGRectMake(7,8,260, 30)] autorelease];
managedTextView.delegate = self;
managedTextView.scrollEnabled = YES;
managedTextView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
managedTextView.text=thought.managedthought;
[cell.contentView addSubview: managedTextView];
cell.accessoryType = UITableViewCellAccessoryNone;
Code bouton Terminé:
- (void)saveTextView:(id)sender
{
[managedTextView resignFirstResponder];
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save:)];
self.navigationItem.rightBarButtonItem = saveButton;
[saveButton release];
...
}
(le bouton « nouveau » save est utilisé lors de l'enregistrement de la totalité UITableViewController)
Est-ce que vous annulez le contrôleur de vue de table après avoir terminé l'édition? J'ai rencontré un plantage non déterministe qui s'est produit lors de l'exécution de [textView resignFirstResponder]
plus un appel (quelque chose comme [self doneClicked:nil]
) qui fermerait le contrôleur de vue qui hébergeait UITableView.
Il libère le UITextView et quand l'appel est revenu dans la méthode UITextView qui a pris naissance à l'appel didEndEditing
, il plantait ou se comporter de manière incompatible (depuis le point de vue avait été libéré) ..
La solution était d'appeler tout après un certain délai:
[self performSelector:@selector(doneClicked:) withObject:nil afterDelay:0.5]
Je ne suis pas sûr que cela fonctionnerait pour moi. J'ai l'apparence d'un bouton "sauvegarder" surchargé. Lorsque l'utilisateur édite UITextView, cette sauvegarde supprime le clavier et enregistre les données UITextView. A tout autre moment, le bouton "Enregistrer" appellera une fonction différente pour enregistrer et rejeter. – user216661
canyou montrer votre code pour le bouton et en ajoutant le fait textview à la cellule? –
code posté ci-dessous – user216661
@JoeCannatti J'ai un problème similaire. J'ai un bouton de sauvegarde sur le dessus et en utilisant resignFirstResponder, mais cela ne fonctionne pas. Cela supprime seulement le focus de UITextView (ne cache pas le clavier). Toute idée –