Проблема с UIActionSheet - PullRequest
       4

Проблема с UIActionSheet

36 голосов
/ 16 декабря 2010

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

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

Как исправить?

Ответы [ 10 ]

61 голосов
/ 23 июля 2012

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

[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
28 голосов
/ 16 декабря 2010

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

12 голосов
/ 19 июля 2011

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

5 голосов
/ 30 сентября 2013
    [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);

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

1 голос
/ 11 октября 2011

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

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

предполагается, что вы используете шаблон TabCarController xCode в качестве начала.

0 голосов
/ 17 августа 2015

Вот версия Swift:

actionSheet.showInView(UIApplication.sharedApplication().keyWindow)
0 голосов
/ 13 августа 2014

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

0 голосов
/ 20 июня 2014

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

[actionSheet showInView:self.view.window];

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

0 голосов
/ 18 июня 2014

Другое похожее решение, которое работало для меня с UIPageViewController -> UINavigationViewController -> TableViewController, является:

[actionSheet showInView:self.view.superview];
0 голосов
/ 10 февраля 2013

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

...