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:@""]; }
6 Réponses :
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: p> < p> ici est le projet fixe: p> p>
Cette méthode est manquante dans votre ou vous pouvez connecter le délégué dans le constructeur interface em> comme Eh bien, si vous préférez comme ça mieux. p> Ajoutez cette méthode à votre classe pour contrôler le code> Retour code > clé. p>
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.
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];
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 p> 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é p> 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. P> p>
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. et que nous ne pouvons utiliser les méthodes UitextFieldelegate. Vous pouvez voir; p> 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!";
}
}
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
}
}
}
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.