Domanda

Qualcuno sa come creare un campo di testo che abbia uno sfondo UIImage e funzioni a capo automatico?

Sembra che il ritorno a capo automatico non sia disponibile su UITextField, mentre un'immagine di sfondo non è disponibile per UITextView! Inoltre, dovrebbe cambiare la dimensione del controllo o almeno avvisare che il numero di righe è cambiato in modo che un delegato possa cambiare la sua dimensione.

Un esempio di tale controllo è il campo di input per i messaggi nell'applicazione SMS.

Modifica : il codice dovrebbe anche ottenere il campo di testo per mostrare sempre il testo in modifica. Apparentemente, quando UITextView cambia dimensione durante la modifica, in qualche modo perde l'attenzione sul testo corrente.

Grazie in anticipo! Aviad.

È stato utile?

Soluzione

Il ritorno a capo automatico non è disponibile su UITextField perché UITextField supporta solo testo a riga singola.

Usa un UITextView. Make textView.backgroundColor = [UIColor clearColor]. Aggiungi prima UIImage, quindi UITextView su di esso. Assicurati che le dimensioni siano corrette e dovresti andare bene.

Per quanto riguarda la modifica delle dimensioni di UITextView, nel tuo UITextViewDelegate, fai qualcosa del genere:

- (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 
    }

}

Altri suggerimenti

Alla fine ho scritto il mio codice, che ha funzionato in una certa misura con molte soluzioni alternative (cambiando il focus, ad esempio, ridimensionando quando si rimuove nuovamente tutto il testo, ecc.). Se qualcuno è interessato, posterò il codice.

In altre notizie, proprio oggi ho visto qui in una domanda diversa qualcosa chiamato IFVerticallyExpandingTextField . Il nome era promettente, il codice è qui e lo darò un'occhiata. Chiunque abbia un problema simile, potresti voler vedere anche questo.

Errore, non l'ho letto abbastanza attentamente: IFVerticallyExpandingTextField è per Mac, non per iPhone.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top