UISplitViewController中的ActionSheet在纵向模式下的行为与横向模式不同

lna*_*ger 5 uiactionsheet ipad uisplitviewcontroller uipopovercontroller ios

我使用基于拆分视图的应用程序模板创建了一个新应用程序.

然后我将一个Action Button添加到名为actionButton的rootViewController导航控制器中.

按下按钮时,我会显示如下的ActionSheet:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
    delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil
    otherButtonTitles:@"Admin Functions", @"Refresh Data", nil];
[actionSheet showFromBarButtonItem:actionButton animated:YES];
[actionSheet release];
Run Code Online (Sandbox Code Playgroud)

在横向模式下按下按钮后,它会在指向按钮的弹出框中显示操作表(正如我预期的那样):

景观模式

但是,在纵向模式下,它看起来完全不同,菜单从rootViewController popover的底部出现,就像在iPhone上一样:

肖像模式

我的问题是,如何在纵向模式下使ActionSheet显示在顶部,就像在横向模式下一样?

由于这是一个"实用程序菜单",它并不直接与显示的数据绑定,因此它不应该是弹出窗口的一部分.

Ala*_*art 3

此行为是设计使然,如果它是纵向模式下的弹出窗口,那么您将有 2 层弹出窗口。

这在技术上可以通过实现您自己的 UIPopover 版本或使用某人已经编写的版本(WEPopover)来实现。

然而,这是一个糟糕的设计选择。您说这些功能与数据无关,但其中之一是“刷新数据”。我会将操作按钮替换为刷新图标,例如苹果在“查找我的朋友”中使用的图标:

刷新按钮

另一个“管理功能”,如果与列表中的数据没有直接关系,可能需要一个新的家,也许与您的应用程序的主视图一起?在不了解更多结构的情况下,很难说最好把它放在哪里。