Подтвердить что ты не робот

Последняя кнопка листа действий не нажимается

Я использовал лист действий в своем проекте, и когда он появляется, он показывает все кнопки, но последняя (четвертая) кнопка не отвечает на мой клик (только половина ответа отвечает).

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

пожалуйста, помогите

4b9b3361

Ответ 1

Я предлагаю использовать это:

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

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

Надеюсь, что это трюк для вас.

Изменить

Если вы используете ландшафтный режим, и метод выше не работает. Вы можете использовать следующее исправление:

@Vinh Tran: [лист showFromTabBar: self.parentViewController.tabBarController.tabBar]

Ответ 2

Какой метод вы используете для показа своего рабочего листа. Попробуйте showFromTabBar: метод

Ответ 3

Реальная проблема возникает, когда ваш интерфейс поворачивается на пейзаж, а контроллер родительского представления имеет трансформацию на нем. Поверьте, это реалистичный сценарий, да. Затем лист действия обрезается, и вы не можете использовать parentViewController, потому что он преобразуется. Решение во избежание всех этих проблем заключается в создании нового окна, добавлении вращающегося контроллера представлений в качестве rootViewController и использовании его представления для отображения листа.

CGRect applicationRect = [[UIScreen mainScreen] bounds];
UIWindow* actionSheetWindow = [[UIWindow alloc] initWithFrame:applicationRect];
RotationViewController* rootViewController = [[RotationViewController alloc] initWithNibName:nil bundle:nil];
actionSheetWindow.rootViewController = rootViewController;
[rootViewController release];
actionSheetWindow.hidden = NO;

UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:nil];
[actionSheet setCancelButtonWithTitle:@"Cancel" handler:^{
    actionSheetWindow.hidden = YES;
    [actionSheetWindow release];
}];

[actionSheet showInView:rootViewController.view];

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

RotationViewController - это только подкласс UIViewController, который реализует

- (void) viewDidLoad {
   [super viewDidLoad];
   self.view.backgroundColor = [UIColor clearColor];
   self.view.opaque = NO;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  return YES;
}