UITextView Text ändern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UITextView Text ändern

    Hallo,

    wenn ich in der Methode textViewDidEndEditing den Text des TextView über die Variable setze, dann ändert dieser sich nicht. Aber wenn ich es hardcodiere geht es.

    Quellcode

    1. @implementation AddViewController {
    2. NSString *textViewVW;
    3. NSString *textViewDS;
    4. NSString *textViewKS;
    5. }
    6. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    7. {
    8. self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    9. if (self) {
    10. textViewVW = @"VW";
    11. textViewDS = @"DS";
    12. textViewKS = @"KS";
    13. }
    14. return self;
    15. }
    16. - (void)textViewDidBeginEditing:(UITextView *)textView
    17. {
    18. if (textView == self.textViewVWOutlet && [textView.text compare:textViewVW]) {
    19. textView.text = @"";
    20. textView.textColor = [UIColor blackColor];
    21. }
    22. [textView becomeFirstResponder];
    23. }
    24. - (void)textViewDidEndEditing:(UITextView *)textView
    25. {
    26. if (textView == self.textViewVWOutlet && [textView.text isEqualToString:@""]) {
    27. textView.text = textViewVW; // hier bleibt alles leer
    28. //textView.text = @"TEST"; Das geht
    29. textView.textColor = [UIColor lightGrayColor];
    30. }
    31. [textView resignFirstResponder];
    32. }
    Alles anzeigen


    Gruß
  • Die Views werden im IB instanziiert.
    Ich denke schon das initWithNibName:bundle aufgerufen wird, denn die erste Überprüfung:

    Quellcode

    1. ​- (void)textViewDidBeginEditing:(UITextView *)textView
    2. {
    3. if (textView == self.textViewVWOutlet && [textView.text compare:textViewVW]) {
    4. ..
    5. }


    funktioniert ja. Ich habs aber trotzdem mal mit initWithCoder probiert funktioniert trotzdem nicht.

    Ich denke ich weiß woran es liegt. Wenn ich eine extra Property erstelle, und diese zuweise geht es aber wenn ich sie vorher auch in die oben genannte Bedingung einfüge geht es nicht mehr.

    //Geht nicht
    @property (weak, nonatomic) NSString *textVW;
    [textView.text compare:self.textVW]
    textView.text = self.textVW;

    //Geht
    @property (weak, nonatomic) NSString *textVW;
    [textView.text compare:textViewVW]
    textView.text = self.textVW;

    macmoonshine schrieb:

    Wenn Du den Textview aus einem Storyboard lädst, verwendet Cocoa-Touch nicht initWithNibName:bundle: und Deine Variable ist leer.

    BTW: Warum verwendest Du keine Properties?


    Wollte nur mal diese Deklaration ausprobieren. :)
  • eminwargo schrieb:

    Ich denke schon das initWithNibName:bundle aufgerufen wird, denn die erste Überprüfung:


    Nein, wird's nicht. awakeFromNib ist Dein Freund.

    Außerdem, auf was möchtest Du mit compare: vergleichen? Auf Gleichheit? Dann schau Dir mal die Doku zu compare: an, die gibt ein NSComparisonResult zurück, kein BOOL! Und wenn textViewVW nil ist, ist das Ergebnis von compare: eh undefiniert. Kann also sein, dass da zufällig irgendwas != 0 zurückkommt und die if-Bedingung zufällig YES ergibt.

    schönen Gruß

    gandhi
  • gandhi schrieb:

    eminwargo schrieb:

    Ich denke schon das initWithNibName:bundle aufgerufen wird, denn die erste Überprüfung:


    Nein, wird's nicht. awakeFromNib ist Dein Freund.


    Danke jetzt kann ich auch die isEqualToString Methode nutzen :D .



    Hätte noch eine Frage möchte jetzt nicht extra ein Thema dafür eröffnen.Wie kann ich überprüfen ob mein UITextView mindestens ein Zeichen oder Buchstaben enthält. Also nicht nur Leerzeichen und neue Zeilen.

    Gruß

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von eminwargo ()