我做了与this问题非常相似的事情。我创建了一个MonoTouch DialogViewController,其中具有一堆EntryElements,用于捕获用户注册的信息。然后,我将此DialogViewController添加到另一个UIViewController中:

            registerDialog = new RegisterDialog (); // the dvc
            registerDialog.View.Frame = new RectangleF (0, 60, 320, View.Frame.Height - 60);
            registerDialog.TableView.BackgroundView = null; // make the background transparent
            Add (registerDialog.View);


当用户单击EntryElement时出现问题。键盘出现,对于前几个EntryElements来说一切都很好,因为键盘没有隐藏任何东西。随着EntryElements的进行,DialogViewController不再在键盘上方滚动元素。基本上,DialogViewController的滚动会中断。

这是由于将DialogViewController的视图添加到另一个视图引起的。将DialogViewController正常推入UINavigationController时,它可以完美地工作:

NavigationController.PushViewController (new LoginScreen (), true);


这是一个错误还是有我可以覆盖的内容来解决滚动问题?

编辑

屏幕截图1:
带有某些EntryElements的DialogViewController。我已向下滚动到底部-姓氏上方还有更多EntryElements。



屏幕截图2:
当我点击Email EntryElement时会发生什么。您可以非常清楚地看到DVC并没有向上滚动表格视图,而通常这样做是这样做的。

最佳答案

您可以尝试将DialogViewController类子类化,而不是将DialogViewController视图添加到另一个视图中。如果您这样做,问题将不复存在。我不知道这是否是一个好方法,但是我在生产中成功使用了它。这是我通常的操作方式,请注意RootElement最初在基本构造函数中为空,但是我们在ViewDidLoad中添加了内容。

public class MyController : DialogViewController
{
    public MyController() : base(new RootElement(""), true)
    {
    }

    public override void ViewDidLoad()
    {
        var section1 = new Section("Credentials")
        {
            new EntryElement("Username", null, null),
            new EntryElement("Password", null, null)
        };

        Root.Add(section1);
       // additional initialization here
    }
}


另外,如果要在表单上方或下方添加内容,则可以向节中添加页眉和页脚-Section类的HeaderView和FooterView属性。

关于iphone - 如何在自定义大小的MonoTouch对话框中使用EntryElement修复滚动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13484280/

10-08 20:56