2012-03-12 10 views
7

I subclases EntryElement y ha establecido el UILineBreakMode en el método GetCell como tal:¿Puede EntryElement ser multilínea en 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; 
    } 
} 

Esto no parece hacer que el texto que se introduce en la palabra envuelta celular. ¿Debería establecer esto en otro lugar?

Si alguien conoce un mejor enfoque, lo que estoy tratando de lograr en un nivel superior es que quiero crear el equivalente de un UITextArea en MonoTouch.Dialog.

Respuesta

5

EntryElement crea un UITextField que es un uno línea de control only.

Si necesita varias líneas, le sugiero que cree su propia Element, p. Ej. MultilineEntryElement, y haz que use un UITextView internamente.

Puede hacer esto copiando el código de EntryElement o heredando UIViewElement (o un poco de ambos).

+0

Esto pareció funcionar para mí con la copia del código del elemento de entrada. El único problema que veo ahora es que en el método 'GetCell' de' EntryElement', 'entry.ShouldEndEditing + = delegate' intenta hacer referencia a' root.Sections'. Esta es una lista interna a la que no puedo acceder en mi subclase. ¿Alguna idea para una solución alternativa? – valdetero

2

he creado un MultilineEntryElement subclasificando UIViewElement en https://gist.github.com/4080025

funciona bastante bien y maneja un marcador de posición. Deberá actualizarlo para su ancho específico.

+0

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

2

Pondré mi sombrero en el ruedo. Miré un par de elementos de entrada multilínea por ahí, y todos tenían problemas de diseño. Escribí este https://gist.github.com/akcoder/5723722 para abordar los problemas de diseño y también para manejar los cambios de orientación. Esto debería funcionar en todas las versiones de iPhone y iPad.

+0

Tendrá que implementar FindControlOfType que no está incluido en la esencia. Además, no admite un título, o se ve bien como un elemento en el lado del detalle una vista dividida (demasiado amplia). Tampoco se ve bien al colocarse en una sección agrupada, porque la vista de texto se redondea (fondo claro = verdadero) y el fondo de la etiqueta del marcador de posición no está claro. ¡Gracias por compartir! – therealjohn

+0

Perdón por olvidar incluir la pieza FindControlOfType . Cuando probé el código se veía bien en una vista agrupada y simple. No estoy seguro de lo que pasó Dejé mi posición anterior por lo que ya no tengo acceso a ese código, así que no podré actualizar la esencia con el código FindControlOfType :( –