MonoTouch と iOS6 シミュレーターで UIDocumentInteractionController を使用しています。iOS6 デバイスでは、コードの半分が機能します。ただし、iOS5 シミュレーター/デバイスではまったく機能しません。これは、サンプル プロジェクトでテストするために作成したサンプル クラスです。
using System;
using MonoTouch.UIKit;
using MonoTouch.Foundation;
namespace DocumentThing
{
public class MyViewController : UIViewController
{
UIDocumentInteractionController documentInteractionController1;
UIDocumentInteractionController documentInteractionController2;
UIBarButtonItem leftButton;
UIBarButtonItem rightButton;
public MyViewController()
{
}
public override void ViewDidLoad()
{
View.BackgroundColor = UIColor.White;
leftButton = new UIBarButtonItem(UIBarButtonSystemItem.Action, null, null);
leftButton.Clicked += delegate(object sender, EventArgs e)
{
InvokeOnMainThread(delegate {
documentInteractionController1 = new UIDocumentInteractionController();
documentInteractionController1.Url = NSUrl.FromFilename(@"testpdf.pdf");
documentInteractionController1.PresentOpenInMenu(View.Frame, View, true);
});
};
NavigationItem.LeftBarButtonItem = leftButton;
rightButton = new UIBarButtonItem(UIBarButtonSystemItem.Action, null, null);
rightButton.Clicked += delegate(object sender, EventArgs e)
{
InvokeOnMainThread(delegate {
documentInteractionController2 = new UIDocumentInteractionController();
documentInteractionController2.Url = NSUrl.FromFilename(@"testpdf.pdf");
documentInteractionController2.PresentOptionsMenu(View.Frame, View, true);
});
};
NavigationItem.RightBarButtonItem = rightButton;
}
}
}
PresentOptionsMenu は iOS6 では正常に動作しますが、iOS5 では動作せず、PresentOptionInMenu は iOS5 と iOS6 の両方で失敗します。これが iOS5/6 SDK/シミュレーターのバグなのか、MonoTouch のバグなのかは不明です。この問題をさらにデバッグする方法がわかりません...
提案?