UIActionSheet предупреждение в iOS

Я пытаюсь показать UIActionSheet от UINavigationController в iOS

Когда я использую [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];

Мне нравится знать, что предупреждающие сообщения важны?

Или я могу игнорировать эти предупреждающие сообщения?

2 ответа

Решение

Ваш навигационный контроллер показывает панель инструментов? Если это так, нижние 44 пункта листа действий, скорее всего, не будут отвечать. Чтобы решить эту проблему, используйте [action showFromToolbar:self.navigationController.toolbar] (так же, как говорится в сообщении об ошибке).

То же самое относится, если ваш навигационный контроллер находится в панели вкладок, но тогда вы должны использовать [action showFromTabBar:self.tabBarController.tabBar],

Я бы порекомендовал вам использовать:

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

это избавит вас от многих проблем с UITabBarController и т. д. Также следует исправить предупреждение.

Другие вопросы по тегам