2012-03-12 2 views
7

I подклассы EntryElement и установили UILineBreakMode в методе GetCell как таковой:Может ли EntryElement быть многострочным на 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; 
    } 
} 

Это не похоже, чтобы текст, который получает введенный в клетки переносился. Должен ли я устанавливать это где-то еще?

Если кто-то знает лучший подход, то, что я пытаюсь выполнить на более высоком уровне, я хочу создать эквивалент UITextArea в MonoTouch.Dialog.

ответ

5

EntryElement создает UITextField, который является один линии only управления.

Если вам нужно несколько строк, я предлагаю вам создать свой собственный Element, например. MultilineEntryElement, и имейте UITextView внутри.

Вы можете сделать это, скопировав код от EntryElement или наследуя от UIViewElement (или немного того и другого).

+0

Это, казалось, работало для меня с копированием кода из элемента ввода. Единственная проблема, которую я вижу сейчас, заключается в том, что в методе 'GetCell' из' EntryElement' 'entry.ShouldEndEditing + = delegate' пытается ссылаться на' root.Sections'. Это внутренний список, к которому я не могу получить доступ в моем подклассе. Любые идеи для обходного пути? – valdetero

4

есть кусок кода multilineEntryElement на https://gist.github.com/315408

в моем приложении выглядит немного напуганным, но это работает.

2

Я создал MultilineEntryElement по подклассов UIViewElement на https://gist.github.com/4080025

работает довольно хорошо, и обрабатывает заполнитель. Вам нужно будет обновить его для вашей конкретной ширины.

+0

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

2

Я брошу свою шляпу в кольцо. Я посмотрел на пару многострочных элементов ввода элементов, и все они имели проблемы с компоновкой. Я написал этот https://gist.github.com/akcoder/5723722 для решения проблем макета, а также для обработки изменений ориентации. Это должно работать на всех версиях iPhone и iPad.

+0

Вам нужно будет реализовать FindControlOfType , который не включен в суть. Кроме того, он не поддерживает подпись или выглядит красиво, как элемент на стороне детали, с разделенным видом (слишком широкий). Он также выглядит неплохо, если его помещать в сгруппированный раздел, поскольку текстовое представление округлено (background clear = true), а фон метки метки заполнителя не ясен. Спасибо, что поделились! – therealjohn

+0

Извините, что забыли включить FindControlOfType . Когда я тестировал код, он выглядел отлично как в сгруппированном, так и в обычном виде. Я не уверен, что произошло. Я покинул свою предыдущую позицию, поэтому у меня больше нет доступа к этому коду, поэтому я не смогу обновить суть с помощью кода FindControlOfType :( –

Смежные вопросы