Monotouch-UIActionSheet在iPad上无法正确显示

Monotouch-UIActionSheet在iPad上无法正确显示,ipad,mono,xamarin.ios,uiactionsheet,Ipad,Mono,Xamarin.ios,Uiactionsheet,我有一个UIActionSheet,可以在iPhone模拟器上正常工作。当用户触摸UIButton时,它会显示 使用iPad,我相信UIActionSheets被包装到UIPopupController中 当我使用iPad模拟器调用相同的代码时,会显示一条细细的“线”,看起来像UIPopupController(你可以看到通常指向控件的小箭头)。所有内容都看不到 使用带MonoTouch的iPad使用UIActionSheet的正确方法是什么?下面是我一直在测试的一些示例代码-创建UIActio

我有一个UIActionSheet,可以在iPhone模拟器上正常工作。当用户触摸UIButton时,它会显示

使用iPad,我相信UIActionSheets被包装到UIPopupController中

当我使用iPad模拟器调用相同的代码时,会显示一条细细的“线”,看起来像UIPopupController(你可以看到通常指向控件的小箭头)。所有内容都看不到

使用带MonoTouch的iPad使用UIActionSheet的正确方法是什么?下面是我一直在测试的一些示例代码-创建UIActionSheet:

var actionSheet = new UIActionSheet () { Style = UIActionSheetStyle.BlackTranslucent };
        actionSheet.Frame = actionSheetFrame;
        actionSheet.Clicked += (s, e) => { Console.WriteLine ("Clicked on item {0}", e.ButtonIndex); };
actionSheet.AddSubview (doneButton);
然后,我通过按钮调用以下命令来显示操作表:

btnSay.TouchUpInside += (sender, e) => {
            actionSheet.ShowFrom(tmpBtn.Frame, tmpView, false);
        };
当我使用iPad模拟器时,我得到了一些类似于附加屏幕截图的东西

以下是使用iPhone模拟器时UIActionSheet的外观,以供参考

注:本项目为通用单视图单触式c#项目


任何指点或帮助都将不胜感激

我最近发布到应用商店的一个应用也遇到了同样的问题

当您在iPad上显示
UIActionSheet
时,iOS会将
UIActionSheet
包装在
UIPopoverView

我使用以下代码来检测这是否是iPad,如果是,请调整popover视图的框架:

const int CHROMEWIDTHLEFT = 9;
const int CHROMEWIDTHRIGHT = 8;
const int MARGIN = 50;

UIActionSheet _actionSheet;

...

if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) {
    var popover = _actionSheet.Superview.Superview;
    if (popover != null)
    {
        var x = _actionSheet.Frame.X + MARGIN;
        var y = (UIScreen.MainScreen.ApplicationFrame.Height - _actionSheet.Frame.Height) / 2;
        var width = _actionSheet.Frame.Width - (MARGIN * 2);
        var height = _actionSheet.Frame.Height;

        popover.Frame = new RectangleF (x, y, width, height);
        _actionSheet.Frame = new RectangleF (x, y, width - (CHROMEWIDTHLEFT + CHROMEWIDTHRIGHT), height - (CHROMEWIDTHLEFT + CHROMEWIDTHRIGHT));
    }
}
该示例基于Xamarin ActionSheet日期选择器


我把它们作为一个(普通和日期选择器)

当触摸btnSay时,什么是tmpBtn.Frame?tmpView呢?我猜您可能想显示btnSay.Superview.Hi Jacob中btnSay.Frame的操作表,tmpBtn.Frame是主视图上按钮的框架/矩形。tmpView本质上只是“视图”,即当前显示的主视图。我会试试你说的-谢谢!嗨,雅各布,对不起,我明白你现在在说什么了——我刚才有点匆忙。是的,就目前而言,我已经在尝试这样显示操作表-使用3 x参数-按钮的帧btnSay.frame,按钮的超视图,以及动画与否的真/假。就像这样,我得到了上面截图中描述的问题。嗨,Macrospus,谢谢你发布你的解决方案。我明天试试看,然后回来汇报。我的问题实际上是修改框架本身-所以这看起来很有希望!嗨,Macrospus,很抱歉没有在这件事上回复你-我做了一次快速的尝试,没有任何运气,但认为我这边有什么错-我已经陷入了业务中,并计划再次尝试-可能在周末。我一看清楚就马上回来!(可能在未来一周内)。谢谢你回来查看。