Проблема с UIActionSheet

Когда я запускаю свое приложение, и я нажимаю кнопку для листа действий, это выглядит следующим образом:

Представление файла действия, обрезанного его надстройкой. Некоторые элементы управления могут не реагировать на касания. На iPhone попробуйте - [UIActionSheet showFromTabBar:] или - [UIActionSheet showFromToolbar:] вместо - [UIActionSheet showInView:].

Как я могу исправить?

Ответ 1

Попробуй, это сработало для меня отлично:

[actionSheet showInView:[UIApplication sharedApplication].keyWindow];

Ответ 2

Вы можете попробовать [MyActionSheet showInView:super.view];, или если у вас есть UITabBar или UIToolbar, то, как это предлагает, вы можете использовать [MyActionSheet showFromTabBar:self.tabBarController.tabBar]; или [MyActionSheet showFromToolBar:self.toolbar];

Ответ 3

Следует использовать [actionSheet showInView:self.parentViewController.view]; вместо self.view, если вы используете UINavigationViewController, потому что этот контроллер имеет верхнюю панель навигации по умолчанию.

Ответ 4

    [sheet showInView:[UIApplication sharedApplication].keyWindow];
    sheet.frame = CGRectMake(0, [UIScreen mainScreen].bounds.size.height-sheet.frame.size.height, [UIScreen mainScreen].bounds.size.width, sheet.frame.size.height);

Это должно решить проблему.

Ответ 5

Я разрешил почти тот же случай:

YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[actionSheet showFromTabBar:delegate.tabBarController.tabBar];

Предположим, что в качестве запуска используется шаблон xBode TabBarController.

Ответ 6

Помните, что ваша панель инструментов может быть частью вашего навигационного контроллера. Вы можете получить к нему доступ с помощью self.navigationController.toolbar

Ответ 7

Другим аналогичным решением, которое работало для меня с помощью структуры UIPageViewController → UINavigationViewController → TableViewController, является:

[actionSheet showInView:self.view.superview];

Ответ 8

Используйте это:

[actionSheet showInView:self.view.window];

Это заставит панель действий отобразиться над навигационными панелями и будет реагировать на все краны. Однако обратите внимание, что если вы используете несколько библиотек скользящих меню влево/вправо, это может привести к тому, что файл actionsheet будет представлен с экрана. Просто проверьте...

Ответ 9

Я попробовал все вышеперечисленные ответы безрезультатно. В конечном счете, я обнаружил, что единственным решением было уменьшить количество элементов на листе действий, которое было переполнено.

Ответ 10

Вот версия Swift:

actionSheet.showInView(UIApplication.sharedApplication().keyWindow)