UIAction시트 취소 버튼 이상 동작
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];
내 오래된 답변도 작동하지만, 매우 까다롭습니다.
가능한 답을 찾았습니다.
01-12-2008 오후 10:22 Tom Saxton:제가 이 버그를 좀 더 살펴봤는데, 탭바에 문제가 있는 것 같습니다.
UIAction을 호출하는 경우UItabViewController의 하위 뷰 컨트롤러에서 Sheet showInView:self.view]가 표시되면 UIaction의 해당 부분에서 취소 버튼에 대한 히트 테스트가 실패합니다.탭 표시줄의 보기 위에 있는 시트입니다.
대신 UITabBarController 보기를 전달하는 경우 UIAction시트가 예상대로 작동합니다.
참고: iPhone OS 2.1 이전 버전에서는 UIAction을 사용합니다.하위 보기를 통과할 때 탭 표시줄의 맨 위에서 시트가 올라왔지만 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];
예를 들어, Nathan이 지적한 대로 showFromTabBar(그래서 존재함)를 사용하면 parentViewController가 필요하지 않습니다(사실 self.parentViewController.tabBarController.tabBarBar는 0을 반환합니다).
참고로 - UID 문서에 동일한 문제가 있습니다.상호 작용 컨트롤러의 작업 시트가 탭 표시줄을 밟고 있습니다.다음을 사용하여 수정합니다.
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
'source' 카테고리의 다른 글
R의 작업 공간에서 하나를 제외한 모든 개체를 제거하려면 어떻게 해야 합니까? (0) | 2023.06.06 |
---|---|
수식 조건으로 "셀에 #N/A가 포함된 경우"를 사용합니다. (0) | 2023.05.31 |
UICollectionViewCell에 둥근 모서리 및 그림자 제거 추가 (0) | 2023.05.31 |
Mac에 gitk 설치 (0) | 2023.05.31 |
다른 색상의 표준 Android 버튼 (0) | 2023.05.31 |