1

我正在尝试UIActionSheetUINavigationControlleriOS 中显示。

当我使用[action showInView:self.view];时,他们向我显示了如下警告消息。

Presenting action sheet clipped by its superview. Some controls might not respond to touches. On iPhone try -[UIActionSheet showFromTabBar:] or -[UIActionSheet showFromToolbar:] instead of -[UIActionSheet showInView:].

但是 UIActionSheet 显示正确,没有发生任何事情。

在我的 iOS 中,我支持横向模式,如以下代码。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.0 ||
        UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) {
        [action showInView:self.view];
    } else {
        [action showInView:self.view.window];

我想知道警告信息很重要吗?

或者我可以忽略该警告信息吗?

4

2 回答 2

6

您的导航控制器是否显示工具栏?如果是这样,操作表的底部 44 点可能不会响应。要解决这个问题,请使用[action showFromToolbar:self.navigationController.toolbar](就像错误消息所说的那样)。

如果您的导航控制器位于标签栏中,这同样适用,但您应该使用[action showFromTabBar:self.tabBarController.tabBar].

于 2013-07-12T14:21:34.793 回答
1

我建议您使用:

UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
if(UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
  [action showInView:[UIApplication sharedApplication].keyWindow];
} else {
  [action showInView:[self.navigationController view] ];      
}

它会为您省去很多 UITabBarController 等的麻烦。它还应该修复警告消息。

于 2013-07-12T14:20:59.837 回答