1

我在 iPad 5.1 (XCode 4.3) 项目中正确实现 UIActionSheet 时遇到问题。我可以用我需要的所有项目正确地填充它。该列表比窗口长,但滚动条会自动出现,等等。但是,取消按钮(我认为应该在最后)在我的标签栏后面隐藏了一半。如下图所示:

(对不起,所以不会让我发布图片)

这是我的故事板设置:入口点是左侧的选项卡栏控制器,它转到另一个导航控制器(中心),右侧的视图控制器作为根视图。 http://i854.photobucket.com/albums/ab103/srVincentVega/ScreenShot2012-06-28at52713PM.png

我尝试过以各种方式呈现 UIActionSheet,但这种奇怪的行为仍然存在,我不知道如何解决它

- (IBAction)cmdReason:(id)sender
{
    NSArray *reasons = [AppState getInspReasons];

    UIActionSheet *action = [[UIActionSheet alloc]
                             initWithTitle:@"Reason for Inspection"
                             delegate:self
                             cancelButtonTitle:@"Cancel"
                             destructiveButtonTitle:nil
                             otherButtonTitles:nil];

    for (NSString *rsn in reasons)
    {
        [action addButtonWithTitle:rsn];
    }

    [action showInView:self.view];
}

我已经尝试了各种方法来显示“动作”——showFromTabBar、showFromToolbar 等——我对这个开发环境非常陌生,所以我还没有跟上这些项目在这个级别如何交互的速度。有人对我如何正确呈现这个有建议吗?

我很抱歉,如果这已经在其他地方被问过。我整天都在尝试来自整个网络的一些代码,包括 SO。我不知道这是否与我的故事板布局有关,或者什么。

还有一件事——当我旋转模拟器时,动作表确实会重绘,但最后的那一点看起来很奇怪,就像它不再知道如何绘制它一样。

非常感谢!

编辑: 我整理了一个非常小的项目来展示这种确切的行为。我没有托管 zip 文件的好方法,所以我放了谷歌文档并分享了它。链接如下。如果您单击它,文件下应该有一个下载选项,它将为您提供原始 zip 文件。

https://docs.google.com/open?id=0B7IYvy9_c_NLaEFneGc5bzc2S2c

4

3 回答 3

1

似乎没有真正的解决方案。UIActionSheet如果您添加这么多按钮标题并从标签栏显示它,这似乎是一个限制。

除此之外,从标签栏显示的正确方法UIActionSheet是使用

[action showFromTabBar:self.tabBarController.tabBar];

代替

// Taken from your example project
AppDelegate *d = [[UIApplication sharedApplication] delegate];
UIWindow *w = d.window;
UIViewController *vc = w.rootViewController;
UITabBarController *c = (UITabBarController *)vc;
UITabBar *t = c.tabBar;
[action showFromTabBar:t];
于 2012-06-29T18:07:03.937 回答
0

尝试这个:

CGRect r = CGRectMake(x, y, w, h); //change values to fit location of button
[actionSheet showFromRect:r inView:self.view animated:YES];

我在我的一个有同样问题的应用程序上使用了它,并且关闭按钮显示正常。

于 2012-06-28T22:42:55.420 回答
0

我想如果你得到标签栏控制器的引用,那么你应该能够从中呈现它。您可以尝试从主窗口显示它,但我认为您不应该依赖它。

[action showInView:[[UIApplication sharedApplication] keyWindow]];
于 2012-06-28T21:41:52.537 回答