2011-09-10 14 views
6

Chcę wyczyścić poprzedni tekst napisany w UITextView przed napisaniem na nim nowego tekstu. Podobało mi się to.Jak wyczyścić poprzedni tekst w UITextView przed napisaniem tekstu?

textView.text = @""; 
textView.text = @"something"; 

Ale poprzedni tekst nie został wyczyszczony. Nakłada się na bieżący tekst. Podgląd tekstu nie można edytować.

+0

Dodaj NSLog (@ "Treść pola tekstowego:% @", textField.text); po pierwszej linii, jaki jest wynik? Czy programistycznie utworzyłeś textField lub używając Buildera interfejsu? – 0x8badf00d

+0

Przykro mi. Jest to textView, a nie textField. Edytowałem. Programowo stworzyłem widok tekstowy. – user698200

Odpowiedz

9

Musisz zaimplementować UITextViewDelegate i metodę, textViewDidBeginEditing. Poniższy kod ustawia tekst textView na @"" (nic), gdy zaczyna się edycja.

- (void) textViewDidBeginEditing:(UITextView *) textView { 
    [textView setText:@""]; 
} 
+0

textViewDidBeginEditing nie jest wywoływany. TextView znajduje się wewnątrz ViewController. Umieściłem textView w widoku rootController, to się nazywa. Ale mój viewController jest popychany viewController, nie jest wywoływana. – user698200

+0

Ustaw 'textView.delegate' na' self'. –

2

Ustaw wybrany zakres do całego tekstu TextView pierwsze:

[textView setSelectedRange:NSMakeRange(0, textView.text.length)]; 
    [textView setText:@""]; 

na przykład:

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { 
    // Make the textView visible in-case the keyboard has covered it 
    [table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1] 
       atScrollPosition:UITableViewScrollPositionTop 
         animated:YES]; 

    // Keyboard toolbar prev/next buttons 
    [nextPreviousControl setEnabled:YES forSegmentAtIndex:0]; 
    [nextPreviousControl setEnabled:NO forSegmentAtIndex:1]; 

    // 
    // Erase all text in the textView before editing starts: 
    // 
    [textView setSelectedRange:NSMakeRange(0, textView.text.length)]; 
    [textView setText:@""]; 
    return YES; 
} 
+0

textViewShoulBeginEditing nie jest wywoływany. TextView znajduje się wewnątrz ViewController. Umieściłem textView w widoku rootController, to się nazywa. Ale mój viewController jest popychany viewController, nie jest wywoływana. – user698200

+0

umieść to w swoim 'ViewController', który ma' UITextView' w metodzie 'viewDidLoad':' [textView setDelegate: self]; '. – chown

+0

A w pliku nagłówkowym dla 'ViewController' dodaj to' 'like this ->' @interface MyViewController: UIViewController {' – chown

1

Oto kod do szybkiego

func textViewDidBeginEditing(textView: UITextView) { 
     txtView.text = "" 
     txtView.textColor = UIColor.blackColor() 
    } 

func textViewDidEndEditing(textView: UITextView) { 
    if txtView.text.isEmpty { 
     txtView.text = "Write your comment." 
     txtView.textColor = UIColor.blackColor() 
    } 
} 

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 
     if text == "\n" // Recognizes enter key in keyboard 
     { 
      textView.resignFirstResponder() 
      return false 
     } 
     return true 
    } 

Uwaga: prześlij delegata do swojego widoku tekstowego

Powiązane problemy