1

J'ai un UITextField que je voudrais permettre l'achèvement automatique par:délégué paramètre iphone UITextView casse auto complétion

[self.textView setAutocorrectionType:UITextAutocorrectionTypeYes]; 

Cela fonctionne normalement, sauf quand je donne la UITextView un délégué. Lorsqu'un délégué est défini, l'exécution automatique s'arrête juste de fonctionner. Le délégué ne dispose que la méthode suivante:

- (void)textViewDidChange:(UITextView *)textView 
{ 
self.textView.text = [self.textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

int left = LENGTH_MAX -[self.textView.text length]; 
self.characterCountLabel.text = [NSString stringWithFormat:@"%i",abs(left)]; 

} 

Est-ce que quelqu'un sait comment avoir à la fois auto complète activée et un ensemble de délégué?

Merci!
Tristan

+0

Seriez-vous d'accord pour expliquer pourquoi vous devez supprimer \ n caractères? – Jasarien

+0

Bonjour Jasarien. Le textView prend des messages de l'utilisateur à publier d'une manière semblable à Twitter. Ils ne sont censés être que quelques phrases et le tout sur une seule ligne. Je suppose que je pourrais simplement supprimer les nouvelles lignes après que l'utilisateur a soumis le message, mais ce n'est pas idéal. Je m'attendrais à ce qu'il y ait un moyen d'utiliser des méthodes de délégué standard sans casser d'autres fonctionnalités. – WoodenKitty

Répondre

0
NSRange r= [self.textView.text rangeOfString:@"\n"]; 
if(r.location!=NSNotFound) //must check before replacing new lines right away, otherwise spellcheck gets broken 
{ 
    self.textView.text = [self.textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
} 

Le problème a été causé en faisant quelque chose qui modifie potentiellement le texte chaque fois qu'il a été modifié (appelant remplacer la méthode). La solution était d'appeler seulement la méthode de remplacement quand c'était nécessaire.

0

Il est probablement en train de rompre l'auto-complétion car vous modifiez simultanément le texte du UITextView.

0

Obtenez ceci: Tout ce que vous avez à faire est de supprimer UITextViewDelegate de votre fichier d'interface (.h).

Vous pouvez toujours définir le délégué sur textView dans la plume.

Étrange, non? Travaillé pour moi, j'espère que cela résoudrait votre problème aussi.