2012-03-12 19 views
7

I podklasy EntryElement i ustawiono UILineBreakMode w metodzie GetCell jako takie:Czy EntryElement może być wieloliniowy w 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; 
    } 
} 

To nie wydaje się, aby tekst, który zostanie wprowadzony do słowa owinięte komórkowej. Czy powinienem ustawić to gdzie indziej?

Jeśli ktoś zna lepsze podejście, to staram się osiągnąć na wyższym poziomie, chcę utworzyć odpowiednik UITextArea w MonoTouch.Dialog.

Odpowiedz

5

EntryElement tworzy UITextField który jest only kontrolę jeden linii.

Jeśli potrzebujesz wielu linii, proponuję utworzyć własne Element, np. MultilineEntryElement, i niech to wewnętrznie używa UITextView.

Można to zrobić, kopiując wklejanie kodu z EntryElement lub dziedzicząc z UIViewElement (lub nieco z obu).

+0

To wydawało się działać dla mnie z kopiowaniem kodu z elementu wpisu. Jedyny problem, jaki widzę teraz, to to, że w metodzie 'GetCell' z' EntryElement', 'entry.ShouldEndEditing + = delegate' próbuje odwołać się do' root.Sections'. Jest to wewnętrzna lista, do której nie mam dostępu w mojej podklasie. Jakieś pomysły na obejście tego problemu? – valdetero

2

stworzyłem MultilineEntryElement przez instacji UIViewElement na https://gist.github.com/4080025

działa całkiem dobrze i obsługuje zastępczy. Będziesz musiał zaktualizować go do swojej określonej szerokości.

+0

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

2

Wrzucę kapelusz na ring. Spojrzałem na parę elementów wielowierszowego elementu wyjściowego i wszystkie miały problemy z układem. Napisałem to: https://gist.github.com/akcoder/5723722, aby rozwiązać problemy z układem i obsługiwać zmiany orientacji. To powinno działać we wszystkich wersjach iPhone'a i iPada.

+0

Będziesz musiał zaimplementować FindControlOfType , który nie jest uwzględniony w istocie. Ponadto nie obsługuje podpisu lub ładnie wygląda jako element po stronie szczegółów, podzielony widok (zbyt szeroki). Również nie wygląda dobrze, gdy umieszcza się je w zgrupowanej sekcji, ponieważ widok tekstu jest zaokrąglony (tło jasne = true), a tło etykiety zastępczej nie jest jasne. Dziękujemy za udostępnienie! – therealjohn

+0

Przepraszamy za zapomnienie o włączeniu elementu FindControlOfType . Kiedy testowałem kod, wyglądało dobrze zarówno w widoku grupowym, jak i prostym. Nie jestem pewien, co się stało. Opuściłem poprzednią pozycję, więc nie mam już dostępu do tego kodu, więc nie będę w stanie zaktualizować istoty kodu FindControlOfType :( –

Powiązane problemy