source

UIAction시트 취소 버튼 이상 동작

manycodes 2023. 5. 31. 17:42
반응형

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

반응형