UIActionSheet 취소 버튼 이상한 동작
사용자에게 수행 할 작업에 대한 선택을 제공하기 위해 작업 시트를 여는 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:
대신 메소드를 사용하십시오 . 툴바에 대한 참조가 필요합니다.
[actionSheet showFromToolbar:self.myToolbar];
내 옛 대답 도 작동하지만 해키입니다.
가능한 답변을 찾았습니다.
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;
이것은 잘 작동
참고 URL : https://stackoverflow.com/questions/1197746/uiactionsheet-cancel-button-strange-behaviour
'Programming' 카테고리의 다른 글
txt 파일에 줄 바꿈을 추가하는 방법 (0) | 2020.07.19 |
---|---|
C에서 밀리 초로 대체 슬립 기능이 있습니까? (0) | 2020.07.19 |
bash에서 별칭으로 인수 전달 (0) | 2020.07.19 |
SQL Server 2008에서 while 루프 수행 (0) | 2020.07.19 |
유형을 비교하는 방법 (0) | 2020.07.19 |