UITextView los métodos de delegado

Estoy tratando de conseguir delegado métodos para trabajar con UITextView, pero no funciona por alguna razón.

He declarado en mi viewController.h que es un UITextViewDelegate

Estoy tratando de conseguir el código siguiente a la obra para borrar el código predeterminado «TEXTO» cuando me toque en el textView.

- (void)textViewDidBeginEditing:(UITextView *)textView {

    if (myTextView.text == @"TEXT") {
        [myTextView setText:@""];
    }

    NSLog(@"did begin editing");
}

Yo esperaba a que el texto se borra y ver la NSLog de impresión cuando me toque en el textView y aparezca el teclado. No pasa nada en absoluto


Usando una vista de texto por el camino porque necesito a escala de la vista de su contenido tamaño y parece que el textView tiene un contentSize de la propiedad, con etiqueta y textField no.

ACTUALIZACIÓN:

Debería haber usado:

if ([myTextView.text isEqualToString:@"TEXT"]) {
    [myTextView setText:@""]; }

aquí está el proyecto si quieres echar un vistazo.

También, he actualizado mi respuesta para corregir su comparación de cadenas y cambió el proyecto. Descarga la actualización del proyecto.

OriginalEl autor Mrwolfy | 2012-08-06

5 Kommentare

  1. 7

    este método es la falta de su Test2ViewController.m de archivo:

    - (void)viewDidLoad {
        [myTextView setDelegate:self];
    }

    o puede conectar el delegado en la el Interface Builder así, si usted prefiere que manera mejor.

    ACTUALIZACIÓN #1:

    añadir que este método de la clase para el control de la return clave.

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
        if ([text isEqualToString:@"\n"]) {
            NSLog(@"Return pressed, do whatever you like here");
            return NO; //or true, whetever you's like
        }
    
        return YES;
    }
    Gracias que funcionó! Una pregunta más. Es posible que la tecla de retorno de hacer el textView dimitir de primera respuesta. No hay ningún método que yo puedo ver.
    por favor, compruebe mi respuesta actualizada.
    Gracias. Que es perfecto.
    usted es bienvenido en cualquier momento. 🙂

    OriginalEl autor holex

  2. 2

    Conectar el delegado de la TextView en el Interface Builder para la clase padre. Me gusta usar la conexión en IB en lugar de código. A mí al menos código para mirar el mejor :). También – no comparar cadenas de esa manera. Uso isEqualToString para la comparación de cadenas:

    if ([myTextView.text isEqualToString:@"TEXT"]) {
            [myTextView setText:@""];
    }

    UITextView los métodos de delegado

    Aquí es el fijo del proyecto:

    OriginalEl autor LJ Wilson

  3. 2

    Creo que tengo una buena solución, en principio:

    Conjunto de la UITextView delegado del auto y, a continuación, hacer su propio delegado – re-utilizando el mismo nombre. Esto le permite interceptar el delegado sin que nada buscando diferentes desde el exterior

    @interface TTGTextView : UITextView<UITextViewDelegate>//UIPlaceHolderTextView
    @property(nonatomic, assign) id<UITextViewDelegate> delegate;
    @synthesize delegate = realDelegate;

    A continuación, seguir adelante y de intercepción de los métodos. Tenga en cuenta que usted necesita para cubrir la totalidad de ellos, de lo contrario no va a reaccionar el «real» delegado

    -(void)textViewDidBeginEditing:(UITextView *)textView
    {
      if ([realDelegate respondsToSelector:@selector(textViewDidBeginEditing:)])
        [realDelegate textViewDidBeginEditing:textView];
      /*YOUR CODE HERE*/
    }
    -(void)textViewDidChange:(UITextView *)textView
    {
      if ([realDelegate respondsToSelector:@selector(textViewDidChange:)])
        [realDelegate textViewDidChange:textView];
      /*YOUR CODE HERE*/
    }
    -(void)textViewDidChangeSelection:(UITextView *)textView
    {
      if ([realDelegate respondsToSelector:@selector(textViewDidChangeSelection:)])
        [realDelegate textViewDidChangeSelection:textView];
      /*YOUR CODE HERE*/
    }
    -(void)textViewDidEndEditing:(UITextView *)textView
    {
      if ([realDelegate respondsToSelector:@selector(textViewDidEndEditing:)])
        [realDelegate textViewDidEndEditing:textView];
      /*YOUR CODE HERE*/
    }
    
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
      if ([realDelegate respondsToSelector:@selector(textView:shouldChangeTextInRange:replacementText:)])
        return [realDelegate textView:self shouldChangeTextInRange:range replacementText:text];
      return YES;
    }
    -(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
    {
      if ([realDelegate respondsToSelector:@selector(textView:shouldInteractWithTextAttachment:inRange:)])
        return [realDelegate textView:self shouldInteractWithURL:URL inRange:characterRange];
      return YES;
    }
    - (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)range
    {
      if ([realDelegate respondsToSelector:@selector(textView:shouldInteractWithTextAttachment:inRange:)])
        return [realDelegate textView:textView shouldInteractWithTextAttachment:textAttachment inRange:range];
      return YES;
    }

    Algunos de los métodos de fuego correctamente, otros no fuego para mí, pero inmediatamente aparece el «real» delegado. Pero este es un punto de partida. Supongo que una más sólida y de manera general podría ser hacer algún tipo de multiplexor que hacer un UITableViewDelegate que contiene una matriz de delegados a fuego.

    OriginalEl autor andy33gmail

  4. 1

    Su UITextview para ser contada, donde su delegado métodos de mentiras…

    Si se agrega a través de la interface builder, basta con conectar los delegados

    o si a través de código

    [yourTextViewOutlet setDelegate:self];

    OriginalEl autor Lithu T.V

  5. 1

    Deponds en su punto de Vista.
    si utiliza TextField, debe ser utilizado UITextFieldDelegate .archivo de encabezado como un delegado como se muestra a continuación.

    @interface ExamPageViewController : UIViewController <UITextFieldDelegate>

    y de lo que podemos ser utilizado UITextFieldDelegate métodos. Usted puede ver;

    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
        [self.questionAnswerTextField resignFirstResponder];
        return YES;
    }
    
    -(void)textFieldDidBeginEditing:(UITextField *)textField {
    
        if ([textField.text isEqualToString:@"Sorunun cevabını buraya yazınız!"]) {
            textField.text = @"";
        }
    }
    
    
    - (void)textFieldDidEndEditing:(UITextField *)textField {
        if ([textField.text isEqualToString:@""]) {
            textField.text = @"Sorunun cevabını buraya yazınız!";
        }
    }

    De lo contrario debe ser utilizado UITextViewDelegate como delegado como por ejemplo el siguiente fragmento de código.

    @interface ExamPageViewController : UIViewController <UITextViewDelegate>

    y de lo que podemos ser utilizado estos métodos de delegado .m archivo

    - (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!";
        }
    }

    OriginalEl autor Emre Gürses

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...