Select either the ID or Name control so that it has focus and the keyboard appears
Rotate the device/simulator
//expected: Device to rotate and the first responder to remain as is with the keyboard selected
//actual: The device rotates, but the first responder is lost
Notes:
If you comment out the base.DidRotate() call, it works (but Apple wants you to call the base)
If you comment out the call to tableView.ReloadData() inside the ReloadData() method, it works (but I don't know what side effects that opens up)
Keeping the first responder and keyboard after rotation works in non-MTD apps
using System;
using MonoTouch.Dialog;
using MonoTouch.UIKit;
namespace MTDRotate
{
public class HomeScreen: DialogViewController
{
public HomeScreen(): base(null, true)
{
Title = "Rotate Focus";
Root = CreateRoot();
}
public RootElement CreateRoot()
{
RootElement rootElement = new RootElement("Details");
Section section = new Section("Test");
section.Add(new EntryElement("ID", "", ""));
section.Add(new EntryElement("Name", "", ""));
rootElement.Add(section);
return rootElement;
}
public override void DidRotate(MonoTouch.UIKit.UIInterfaceOrientation fromInterfaceOrientation)
{
base.DidRotate(fromInterfaceOrientation);
}
}
}
Comment from Rolf:
Apparently ReloadData should resign the first responder:
From https://bugzilla.xamarin.com/show_bug.cgi?id=17714:
Moved from discussion here: https://forums.xamarin.com/discussion/13341/restore-focus-after-rotate#latest
//expected: Device to rotate and the first responder to remain as is with the keyboard selected //actual: The device rotates, but the first responder is lost
Notes:
Comment from Rolf:
Apparently ReloadData should resign the first responder:
http://stackoverflow.com/questions/6409370/uitableview-reloaddata-resigns-first-responder
However we seem to need ReloadData to resize cells:
https://github.com/migueldeicaza/MonoTouch.Dialog/commit/b55b51d1668adb9f7ca90c68e2526b977c18f4bd
I'm not sure how to best solve this situation.