NSString UITextView sans remplacement) texte
Comment puis-je ajouter du texte à un UITextView
sans remplacer le texte précédent?
Pour l'instant j'ai un UITextView
et un UIButton
qui ajoute le texte à la UITextView
, mais j'aimerais que le champ de texte pour ajouter plus de texte à chaque fois que vous appuyez sur le bouton au lieu de les supprimer complètement le texte et de le remplacer.
OriginalL'auteur nfoggia | 2012-01-31
Vous devez vous connecter pour publier un commentaire.
Voici quelques façons de surmonter les obstacles au développement iOS:
Regarder la documentation de la catégorie particulière que vous essayez de les manipuler. Dans ce cas,
UITextView
documentation peut être trouvée dans Xcode, ou en ligne.De commande-Cliquez sur
UITextView
ou tout autre objet n'importe où dans votre code, et il vous amènera vers le fichier d'en-tête pour la classe. L'en-tête de fichier de la liste de chaque méthode publique et de la propriété.Regardez votre code existant. Je suppose que, puisque vous avez un bouton qui permet d'ajouter un texte à un
UITextView
, vous comprenez la façon de définir son texte. 99% du temps, vous verrez que tout setter (mutateur) les méthodes getter correspondant (accesseur) de la méthode. Dans ce cas,UITextView
a une méthode appeléesetText:
et de la méthode d'appariement juste appelétext
.Enfin,
NSString
a une méthode bien pratique appeléestringWithFormat:
que vous pouvez utiliser pour concaténer (join) deux chaînes de caractères, parmi d'autres choses utiles.%@
est le spécificateur de format pour une chaîne de caractères. Par exemple, de combiner les deux chaînes,stringOne
etstringTwo
, vous pouvez effectuer les opérations suivantes:NSString *string = [NSString stringWithFormat:@"%@ %@", stringOne, stringTwo];
Je vous laisse trouver la réponse à la façon de combiner les
NSString
stringWithFormat:
etUITextField
text
etsetText:
à réaliser ce que vous souhaitez accomplir.Edit:
L'OP a été incapable de comprendre comment utiliser les informations ci-dessus ainsi un exemple de code complet a été fourni ci-dessous.
Suppose que vous avez synthétisé propriété (peut-être une
IBOutlet
)UITextView
que vous avez initialisé appelémyTextView
. Supposons aussi que nous sommes actuellement dans la portée de la méthode de la méthode qui est appelée (votreIBAction
, si vous êtes en utilisant de l'IB) lorsque vous appuyez sur votreUIButton
.Explication:
myTextView.text
attrape le texte existant à l'intérieur de laUITextView
et il vous suffit d'ajouter quelque chaîne que vous souhaitez. Donc, si le mode texte est à l'origine peuplé avec le texte "Hello world" et vous avez cliqué sur le bouton trois fois, vous vous retrouvez avec la progression suivante:Chaîne initiale: @"Bonjour le monde"
Appuyez sur l'une: @"Bonjour tout le monde ceci est un texte"
Appuyez Deux: @"Bonjour tout le monde ceci est un nouveau texte ceci est un texte"
Appuyez Trois: @"Bonjour tout le monde ceci est un nouveau texte ceci est un texte nouveau texte ceci est un texte"
Il peut, en utilisant uniquement les méthodes que j'ai décrites ci-dessus.
Tout ce dont vous avez besoin se trouve ici, vous avez juste besoin d'essayer au lieu d'utiliser un débordement de pile comme une béquille à compter. Je vais modifier la question et de le rendre un peu plus facile pour vous, si je dois.
si vous le saviez déjà tout ça, vous ne seriez pas ici d'en poser une simple question. Je n'ai rien contre de simples questions, mais votre ton et le manque de respect pour Jack prévenant réponse, je me demande si vous devriez être ici à tous.
désolé explosion de tout à l'heure... j'ai eu une mauvaise journée. haha. Merci une tonne, en fait je viens de pensé à elle et j'étais venue pour m'excuser et vous mettre que. Merci les gars.
OriginalL'auteur Jack Lawrence
Si tout ce que vous faites est l'ajout de texte, vous pourriez trouver cela un peu plus simple:
J'ai trouvé ceci sur UITextView insérer du texte dans le textview text. Malheureusement, je n'ai pas trouvé un moyen d'ajouter du texte directement, sans de gros de remplacement de texte dans la UITextView. Il m'énerve que l'effort est proportionnel à la longueur totale de la chaîne existante et le suffixe, plutôt que de simplement le suffixe.
.text
:[myTextView setText:[myTextView stringByAppendingString:@"suffix\n"]];
devrait être[myTextView setText:[myTextView.text stringByAppendingString:@"suffix\n"]];
sinon vous appelez unNSString
méthode sur unUITextView
😉 ... btwmyTextView.text = [myTextView.text stringByAppendingString:@"suffix\n"];
est encore plus court 😉Merci, @A. J'ai enlevé trop quand j'ai copié de mon projet.
Votre réponse doit encore être corrigé à myTextView.text = [myTextView.texte stringByAppendingString:@"suffixe\n"]; comme par @A du commentaire
OriginalL'auteur Randall Cook
Un moyen plus efficace pour ajouter du texte est d'utiliser
replace()
à la fin:OriginalL'auteur Patrick Beard
@Jack-Laurent: Votre réponse ne couvre pas la question complètement.
L'exemple ci-dessous ne seront pas faites défiler soigneusement lors de l'exécution sur le fond lorsqu'il est appelé à chaque seconde:
Ceci est causé par setText de remplacer le texte original à chaque fois ce qui réinitialisation associés contentOffsets etc.
C'était possible avant iOS 7, mais depuis iOS 7, il semble que setText ne peut pas être empêché présentant des problèmes de comportement. Ajout ne semble pas être une option pour TextViews dans ce scénario?
OriginalL'auteur Wouter Scholtens