10
votes

UitextView Méthodes de délégué

J'essaie d'obtenir des méthodes de délégation pour travailler avec UITEXTVIEW, mais cela ne fonctionne pas pour une raison quelconque.

J'ai déclaré dans mon objectifController.h qu'il s'agit d'un uitextViewelegate p>

J'essaie de Obtenez le code suivant pour effacer le code par défaut "Texte" lorsque j'appuyez sur TextView. P>

if ([myTextView.text isEqualToString:@"TEXT"]) {
    [myTextView setText:@""]; }


1 commentaires

En outre, j'ai mis à jour ma réponse pour corriger votre comparaison de chaînes et modifié le projet. Téléchargez le projet mis à jour.


6 Réponses :


2
votes

Connectez le délégué du TextView dans l'interface Builder à la classe mère. J'aime utiliser la connexion dans IB plutôt que le code. Pour moi, moins de code pour regarder le mieux :). Aussi - ne comparez pas les cordes de cette façon. Utilisez Isequaltostring pour la comparaison des chaînes: xxx

photo de connexion < p> ici est le projet fixe:


0 commentaires

7
votes

Cette méthode est manquante dans votre Test2ViewController.m Fichier: xxx

ou vous pouvez connecter le délégué dans le constructeur interface comme Eh bien, si vous préférez comme ça mieux.

Mise à jour # 1:

Ajoutez cette méthode à votre classe pour contrôler le Retour clé. xxx


1 commentaires

Merci cela a fonctionné! Une dernière question. Est-il possible d'avoir la touche de retour rendre le TextView démissionne le premier répondeur. Il n'y a pas de méthode que je peux voir.



1
votes

Votre UitextView a besoin d'être informé où se trouve ses méthodes de délégation ...

Si vous l'ajoutez via Interface Builder, connectez simplement les délégués p>

ou si via le code P>

[yourTextViewOutlet setDelegate:self];


0 commentaires

2
votes

Je pense avoir une bonne solution en principe:

Définissez le délégué de l'UITEXTVIEW à soi, puis faites votre propre déléguée - à l'aide du même nom. Cela vous permet d'intercepter le délégué sans rien avoir à la recherche différente de l'extérieur xxx

puis continuez et interceptez les méthodes. Notez que vous devez tous les couvrir, sinon ils ne réagiront pas le "vrai" délégué xxx

Certaines méthodes incendient correctement, d'autres ne se tient pas pour moi du tout sauf apparaissent immédiatement pour le "vrai" délégué. Mais c'est un point de départ. Je suppose qu'une manière plus solide et générale serait de faire une sorte de multiplexeur - en faire un éditeurViewelegate qui contient une gamme de délégués à déclencher.


0 commentaires

1
votes

dépasse à votre vue. Si vous utilisez TextField, vous devez utiliser UitextFieldelegate dans le fichier .Deader en tant que délégué, tout comme Afficher ci-dessous. XXX PRE>

et que nous ne pouvons utiliser les méthodes UitextFieldelegate. Vous pouvez voir; p> xxx pré>

sinon, vous devez utiliser uitextviewelegate comme délégué comme ci-dessous Snippet de code. P>

- (BOOL)textViewShouldReturn:(UITextView *)textField {
    [self.questionAnswerTextField resignFirstResponder];
    return YES;
}

-(void)textViewDidBeginEditing:(UITextView *)textField {

    if ([textField.text isEqualToString:@"Sorunun cevabını buraya yazınız!"]) {
        textField.text = @"";
    }
}


- (void)textViewDidEndEditing:(UITextView *)textField {
    if ([textField.text isEqualToString:@""]) {
        textField.text = @"Sorunun cevabını buraya yazınız!";
    }
}


0 commentaires

0
votes

swift 4,5 em> strong>

Écrivez cette extension au bas de votre contrôleur. Il peut être utilisé pour montrer et masquer l'espace réservé dans TextView. P>

extension ViewController: UITextViewDelegate {
    func textViewDidBeginEditing(_ textView: UITextView) {
        if textView == yourTxtView {
            txtNote.text = ""
            txtNote.textColor = .black
        }
    }

    func textViewDidEndEditing(_ textView: UITextView) {
        if textView == yourTxtView {
            txtNote.text = "Note:"
            txtNote.textColor = .gray
        }
    }
}


0 commentaires