gpt4 book ai didi

ipad - Monotouch - UIActionSheet 在 iPad 上显示不正确

转载 作者:行者123 更新时间:2023-12-02 08:45:42 25 4
gpt4 key购买 nike

我有一个在 iPhone 模拟器上运行良好的 UIActionSheet。它在用户触摸 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 模拟器时得到了类似于附件中的屏幕截图。

iPad UIActionSheet example

作为引用,这是使用 iPhone 模拟器时 UIActionSheet 的样子。

iPhone UIActionSheet example

注意:该项目是一个通用的单 View MonoTouch c#项目。

如有任何指点或帮助,我们将不胜感激!

最佳答案

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

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

我用下面的代码来检测这是否是iPad,如果是,调整popover view的frame:

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 日期选择器 here

我已经把它们写成 Gist (普通和 DatePicker)

关于ipad - Monotouch - UIActionSheet 在 iPad 上显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com