2011-09-10 16 views
6

Quiero borrar texto anterior escrito en UITextView antes de que se escriba texto nuevo en él. Me gustó esto.¿Cómo borrar el texto anterior en UITextView antes de escribir el texto?

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

Pero, el texto anterior no está borrado. Se superpone con el texto actual. Textview no es editable.

+0

Agregue NSLog (@ "Text Field Content:% @", textField.text); después de la primera línea, ¿cuál es la salida? ¿Creó textField mediante programación o utilizando el constructor de interfaz? – 0x8badf00d

+0

Lo siento. Es textView, no textField. Yo edité Creé textview programmatically. – user698200

Respuesta

9

Debe implementar el UITextViewDelegate y el método, textViewDidBeginEditing. El siguiente código establece el texto de textView en @"" (nada) cuando comienza la edición.

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

textViewDidBeginEditing no se llama. TextView está dentro de ViewController. Puse textView en la raíz viewController, se llama. Pero, mi viewController está presionado viewController, no se llama. – user698200

+0

Establezca 'textView.delegate' en' self'. –

2

Ajuste el rango seleccionado a todo el texto de la Textview primera:

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

Como en:

- (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 no se llama. TextView está dentro de ViewController. Puse textView en la raíz viewController, se llama. Pero, mi viewController está presionado viewController, no se llama. – user698200

+0

pon esto en tu 'ViewController' que tiene' UITextView' en el método 'viewDidLoad':' [textView setDelegate: self]; '. – chown

+0

Y en el archivo de encabezado para su 'ViewController' agregue este' 'como este ->' @interface MyViewController: UIViewController {' – chown

1

Aquí es un código para SWIFT

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 
    } 

Nota: dele un delegado a su vista de texto

Cuestiones relacionadas