2012-03-12 26 views
7

Tôi subclassed EntryElement và đã thiết lập các UILineBreakMode trong phương pháp GetCell như vậy:EntryElement có thể là đa luồng trên MonoTouch.Dialog không?

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

này dường như không làm cho văn bản đó được nhập vào word-bọc tế bào. Tôi có nên đặt cái này ở đâu khác không?

Nếu ai đó biết cách tiếp cận tốt hơn, những gì tôi đang cố gắng thực hiện ở cấp độ cao hơn là tôi muốn tạo tương đương với một UITextArea trong MonoTouch.Dialog.

Trả lời

5

EntryElement tạo một số UITextField là một điều khiển một điều khiển only.

Nếu bạn cần nhiều dòng thì tôi khuyên bạn nên tạo Element của riêng mình, ví dụ: MultilineEntryElement và sử dụng số UITextView nội bộ.

Bạn có thể thực hiện việc này bằng cách sao chép mã từ EntryElement hoặc bằng cách kế thừa từ UIViewElement (hoặc một chút của cả hai).

+0

Điều này có vẻ phù hợp với tôi với mã sao chép từ phần tử nhập. Vấn đề duy nhất mà tôi thấy bây giờ là trong phương thức 'GetCell' từ' EntryElement', 'entry.ShouldEndEditing + = delegate' cố gắng tham chiếu đến' root.Sections'. Đây là danh sách nội bộ mà tôi không thể truy cập trong lớp con của mình. Bất kỳ ý tưởng cho một workaround? – valdetero

4

có một mã số mảnh multilineEntryElement tại https://gist.github.com/315408

trong ứng dụng của tôi có vẻ một chút sôi nổi nhưng nó hoạt động.

2

Tôi tạo ra một MultilineEntryElement bởi subclassing UIViewElement tại https://gist.github.com/4080025

trình khá tốt và xử lý một placeholder. Bạn sẽ cần phải cập nhật nó cho chiều rộng cụ thể của bạn.

+0

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

2

Tôi sẽ ném chiếc mũ của mình vào vòng. Tôi nhìn vào một vài yếu tố nhập multiline gists ra khỏi đó, và tất cả đều có vấn đề bố trí. Tôi đã viết số này https://gist.github.com/akcoder/5723722 để giải quyết các vấn đề bố cục và cũng để xử lý các thay đổi định hướng. Điều này sẽ hoạt động trên tất cả các phiên bản của iPhone và iPad.

+0

Bạn sẽ phải triển khai FindControlOfType không được bao gồm trong gist. Ngoài ra, nó không hỗ trợ một chú thích, hoặc nhìn đẹp như một phần tử ở phía chi tiết một cái nhìn phân chia (quá rộng). Nó cũng không có vẻ tốt được đặt trong một phần được nhóm, vì khung nhìn văn bản được làm tròn (nền xóa = true) và nền nhãn chỗ dành sẵn không rõ ràng. Cảm ơn bạn đã chia sẻ! – therealjohn

+0

Xin lỗi vì đã quên bao gồm phần FindControlOfType . Khi tôi kiểm tra mã, nó trông ổn ở cả chế độ xem theo nhóm và đồng bằng. Tôi không chắc chuyện gì đã xảy ra. Tôi rời khỏi vị trí trước đó của tôi vì vậy tôi không có quyền truy cập vào mã đó nữa vì vậy tôi sẽ không thể cập nhật các ý chính với mã FindControlOfType: ( –

Các vấn đề liên quan