사용자에게 수행 할 작업에 대한 선택권을 제공하기 위해 작업 시트를 여는 UIBarButtonItem이 있습니다. “취소”버튼을 클릭하지 않는 한 모든 것이 예상대로 작동합니다. 버튼의 대상이 있어야하는 위치에서 위로 이동 한 것으로 보입니다. “취소”와 “확인”버튼의 중간을 클릭해야만 활성화 할 수 있습니다.
나는 다른 응용 프로그램에서 액션 시트를 시도해 보았고 잘 작동하므로 내 엄지 손가락이 아닙니다. 작업 시트가 UIViewController에서 열립니다.
- (void)showOpenOptions
{
UIActionSheet *sheet = [[UIActionSheet alloc]
initWithTitle:NSLocalizedString(@"Open link in external application?", @"Open in external application")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel")
destructiveButtonTitle:NSLocalizedString(@"Open Link", @"Open Link")
otherButtonTitles:nil];
[sheet showInView:self.view];
[sheet release];
}
답변
현재보기 컨트롤러의보기를 작업 시트에 전달하는 대신의 showFromTabBar:
메서드를 사용합니다 UIActionSheet
.
올바른 방법
이것은 올바른 탭 가능 영역을 제공합니다.
[actionSheet showFromTabBar:self.tabBarController.tabBar];
잘못된 방법
이렇게하면 탭할 수있는 영역이 잘못된 위치에 배치됩니다 (탭 막대 또는 도구 모음을 사용하는 경우).
[actionSheet showInView:self.view];
툴바 를 사용하는 경우 showFromToolbar:
대신 방법을 사용하세요. 툴바에 대한 참조가 필요합니다. 대부분의 경우 ivar
[actionSheet showFromToolbar:self.myToolbar];
My Old Answer 도 작동하지만 해킹됩니다.
가능한 답을 찾았습니다.
2008 년 12 월 1 일 10:22 PM Tom Saxton :이 버그를 좀 더 살펴 봤는데 탭 바에 문제가있는 것 같습니다.
UITabViewController의 자식 인 뷰 컨트롤러에서 UIActionSheet의 [sheet showInView : self.view]를 호출하면 취소 버튼에 대한 적중 테스트가 탭바의 뷰 위에있는 UIActionSheet 부분에서 실패합니다.
대신 UITabBarController의 뷰를 전달하면 UIActionSheet가 예상대로 작동합니다.
참고 : iPhone OS 2.1 및 이전 버전에서는 UIActionSheet가 자식보기를 통과 할 때 탭 표시 줄의 맨 위에서 표시되었지만 2.2에서는 탭 표시 줄의 맨 아래에서 표시되므로 탭보기를 덮습니다.
http://openradar.appspot.com/6410780
편집 : 보기를 탭 모음의보기로 변경하면 제대로 작동합니다.
[sheet showInView:self.parentViewController.tabBarController.view];
답변
여기 에서 작동 하는 답을 찾았습니다 .
사용 : [filterActionSheet showInView:[self.view window]]
;
내 탭 표시 줄에 액세스하는 몇 가지 방법을 시도했는데이 앱이 설정되는 방식이 복잡해 보입니다 …
답변
대신 다음을 사용하십시오.
[sheet showFromTabBar:theTabBar];
답변
수정 사항은 다음과 같습니다.
[actionsheet showInView:[UIApplication sharedApplication].keyWindow];
답변
세 가지 답변의 조합이 이것을 처리하는 올바른 방법이라고 생각합니다.
[actionSheet showFromTabBar:self.tabBarController.tabBar];
즉, showFromTabBar를 사용하십시오 (그게 존재하는 이유입니다) Nathan이 지적한 것처럼 parentViewController가 필요하지 않습니다 (사실 self.parentViewController.tabBarController.tabBar는 나를 위해 nil을 반환합니다.
답변
참고로-UIDocumentInteractionController의 작업 시트가 탭 바를 밟는 것과 동일한 문제가 발생했습니다. 다음을 사용하여 수정했습니다.
UIViewController *parentView = [[self parentViewController] parentViewController];
[docController presentOptionsMenuFromRect: rect inView: parentView.view animated:YES];
답변
간단한 코드 작성
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
이것은 잘 작동한다