Pregunta

¿Alguien sabe cómo crear un campo de texto que tenga un fondo UIImage y que ajuste las palabras?

¡Parece que el ajuste de texto no está disponible en UITextField, mientras que una imagen de fondo no está disponible para UITextView! Además, debería cambiar el tamaño del control o al menos alertar que la cantidad de líneas cambió para que un delegado pueda cambiar su tamaño ...

Un ejemplo de dicho control es el campo de entrada para mensajes en la aplicación de SMS.

Editar : el código también debe tener el campo de texto para mostrar siempre el texto que se está editando. Aparentemente, cuando UITextView cambia de tamaño mientras lo edita, de alguna manera pierde el foco en el texto actual.

¡Gracias por delante! Aviad.

¿Fue útil?

Solución

El ajuste de texto no está disponible en UITextField porque UITextField solo admite texto de una sola línea.

Use un UITextView. Hacer textView.backgroundColor = [UIColor clearColor]. Agregue el UIImage primero, luego el UITextView encima. Asegúrese de que los tamaños sean correctos y que esté bien.

En cuanto a cambiar el tamaño de UITextView, en su UITextViewDelegate, haga algo como esto:

- (void)textViewDidChange:(UITextView *)textView
{
    NSString *s = textView.text;
    CGSize testSize = CGSizeMake(textView.frame.size.width, NSIntegerMax);
    CGSize neededSize = [s sizeWithFont: textView.font constrainedToSize: testSize     lineBreakMode: UILineBreakModeWordWrap]; // or UILineBreakModeCharacterWrap?

    if (neededSize.height > testSize.height)
    {
        // grow textView
        textView.frame = CGRectMake(textView.frame.origin.x, textView.frame.origin.y, neededSize.width, neededSize.height);

        // then adjust the image size -- something like this
        imageView.frame = textView.frame 
    }

}

Otros consejos

Finalmente escribí mi propio código, que funcionó hasta cierto punto con muchas soluciones alternativas (por ejemplo, cambiar el enfoque, cambiar el tamaño al eliminar todo el texto, etc.). Si alguien está interesado, publicaré el código.

En otras noticias, justo hoy vi en una pregunta diferente por aquí algo llamado IFVerticallyExpandingTextField . El nombre era prometedor, el código está aquí y lo echaré un vistazo. Cualquier persona con un problema similar, es posible que desee ver esto también.

Mi error, no lo leí con suficiente atención: IFVerticallyExpandingTextField es para Mac, no para iPhone.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top