2012-03-12 11 views
7

I sottoclasse EntryElement e hanno fissato il UILineBreakMode nel metodo GetCell in quanto tale:Can EntryElement può essere multilinea su MonoTouch.Dialog?

public class EntryElementEnhanced : EntryElement, IElementSizing 
{ 
    public EntryElementEnhanced(string caption, string placeholder, string value) : base (caption, placeholder, value) {} 


    public float GetHeight(UITableView view, NSIndexPath indexPath) 
    { 
     return 100.0f; //arbitrary number just for testing 
    } 

    public override UITableViewCell GetCell (UITableView tv) 
    { 
     var cell = base.GetCell (tv); 
     cell.TextLabel.LineBreakMode = UILineBreakMode.WordWrap; 
     cell.TextLabel.Lines = 0; 


     return cell; 
    } 
} 

Questo non sembra rendere il testo che viene immesso nella parola-avvolto cellule. Dovrei ambientarmi da qualche altra parte?

Se qualcuno conosce un approccio migliore, quello che sto cercando di ottenere ad un livello superiore è creare l'equivalente di un UITextArea in MonoTouch.Dialog.

risposta

5

EntryElement crea un UITextField che è un only controllo uno linea.

Se sono necessarie più linee, suggerisco di creare il proprio Element, ad es. MultilineEntryElement e utilizzarlo internamente allo UITextView.

È possibile eseguire questa operazione copiando il codice da EntryElement o ereditando dallo UIViewElement (o un po 'di entrambi).

+0

Questo sembrava funzionare per me con il codice di copia dall'elemento di ingresso. L'unico problema che vedo ora è che nel metodo 'GetCell' da' EntryElement', 'entry.ShouldEndEditing + = delegate' tenta di fare riferimento a' root.Sections'. Questa è una lista interna a cui non posso accedere nella mia sottoclasse. Qualche idea per una soluzione alternativa? – valdetero

2

ho creato un MultilineEntryElement sottoclasse UIViewElement a https://gist.github.com/4080025

funziona piuttosto bene e gestisce un segnaposto. Dovrai aggiornarlo per la tua larghezza specifica.

+0

'float containerWidth = UIScreen.MainScreen.Bounds.Width;' – BRogers

2

Lancio il mio cappello sul ring. Ho esaminato un paio degli elenchi di elementi di input multilinea, e tutti avevano problemi di layout. Ho scritto questo https://gist.github.com/akcoder/5723722 per risolvere i problemi di layout e anche per gestire le modifiche di orientamento. Questo dovrebbe funzionare su tutte le versioni di iPhone e iPad.

+0

Dovrai implementare FindControlOfType che non è incluso nel gist. Inoltre, non supporta una didascalia, o un aspetto gradevole come un elemento sul lato dei dettagli una vista divisa (troppo ampia). Inoltre, non sembra bello essere collocato in una sezione raggruppata, poiché la visualizzazione del testo è arrotondata (background clear = true) e lo sfondo dell'etichetta del segnaposto non è chiaro. Grazie per la condivisione però! – therealjohn

+0

Ci scusiamo per aver dimenticato di includere il pezzo FindControlOfType . Quando ho provato il codice, sembrava buono sia in una visualizzazione raggruppata che in quella normale. Non sono sicuro di cosa sia successo. Ho lasciato la mia posizione precedente quindi non ho più accesso a quel codice quindi non potrò aggiornare l'essenza con il codice FindControlOfType :( –

Problemi correlati