2013-07-12 6 views
1

iOS에 UINavigationController에서 UIActionSheet을 표시하려고합니다.iOS의 UIActionSheet 경고 메시지

내가 [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]; 

경고 메시지가 중요하다는 것을 알고 싶습니까?

경고 메시지를 무시해도됩니까?

+1

탐색 컨트롤러에 도구 모음이 표시됩니까? 탭 막대가 포함되어 있습니까? 이 질문에 대한 답변을 토대로 적절한 "쇼 ..."방법을 사용하십시오. – rmaddy

+1

이 메시지는 UIAlertView의 버튼을 UIToolBar로 덮을 수 있음을 의미합니다. 그냥 더 많은 버튼을 추가하려고하면, 당신은 그들 중 일부를 클릭 할 수 없을 것입니다 ... – Injectios

답변

6

탐색 컨트롤러에 도구 모음이 표시됩니까? 그렇다면 액션 시트의 아래쪽 44 점이 응답하지 않을 가능성이 높습니다. 이를 해결하려면 [action showFromToolbar:self.navigationController.toolbar]을 사용하십시오 (오류 메시지가 말하는 것과 같습니다).

내비게이션 컨트롤러가 탭 막대이지만 다음에 [action showFromTabBar:self.tabBarController.tabBar]을 사용해야하는 경우에도 마찬가지입니다.

+0

감사합니다. 나는 그것을 가지고 :) –

+0

또한, 작업 시트 외부를 클릭하면 작업 시트를 닫거나 취소해야하지만, 이렇게하지 않으면 작동하지 않는 것 같습니다. –

1

난 당신이 사용하는 것이 좋습니다 :

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

그것은 또한 경고 메시지를 수정해야 UITabBarController가 등으로 문제가 당신을 많이 절약 할 수 있습니다.

+0

그것은 초상화 모드 동생에 대해서만 작동합니다. –

+0

답변을 업데이트했습니다. 지금 시도해보십시오. –

+0

아직도 나를 위해 작동하지 않습니다. –