我做了与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/