2014-09-26 2 views
4

iOS 7에서는 actionSheet를 표시 할 수 있지만 iOS 8 환경에서는 표시 할 수 없습니다. 추적 할 방법이 있습니까?iOS 8에 UIActionSheet가 표시되지 않습니다.

UIActionSheet *_actionSheet = [[UIActionSheet alloc] initWithTitle:@"Account" 
                   delegate:self 
                 cancelButtonTitle:@"Close" 
               destructiveButtonTitle:@"Log Out" 
                 otherButtonTitles:@"View Account", nil]; 

    [_actionSheet showInView:appDel.window]; 
+1

왜냐하면'UIActionSheets'은'iOS8'에 더 이상 존재하지 않기 때문에'UIAlertController'를 사용하지 않기 때문입니다 https://developer.apple.com/Library/ios/documentation/UIKit/Reference /UIAlertController_class/index.html – Popeye

+2

@Popeye "deprecated"는 "제거됨"을 의미하지 않고 "회피하십시오"를 의미합니다. –

+0

내 iPhone 앱에서 더 이상 작동하지 않았습니다. iOS 9를 사용하면 내 UIActionSheet가 화면 전체를 어둡게 만 표시하고 팝업 메뉴가 나타나지 않습니다. 여기에 내 수정의 세부 사항 : http://stackoverflow.com/questions/32824199/action-sheet-problems-in-ios-9/35316029#35316029 (한숨 ...) –

답변

3

UIActionSheet를 만들고 UIAlertControllerStyleActionSheet의 preferredStyle와 UIAlertController를 사용해야합니다 아이폰 OS 8 액션 시트를 관리하려면

enter image description here

아이폰 OS 8에서 더 이상 사용되지 않습니다.

이 부분은 example을 참조하십시오.

+1

나는이 페이지도 참조하지만 나는 getting "sourceView 및 sourceRect 또는 barButtonItem 중 하나를 제공해야합니다. 경고 컨트롤러를 표시 할 때이 정보를 알 수없는 경우 UIPopoverPresentationControllerDelegate 메서드 -prepareForPopoverPresentation에이 정보를 제공 할 수 있습니다." 나는 다른 페이지를 참조하지만 나는 버튼 부분에 갇혀있다. http://stackoverflow.com/questions/24224916/presenting-a-uialertcontroller-properly-on-an-ipad-using-ios-8 –

0

분명히 iOS 8의 회귀입니다. rdar도 제출 했으니 너무하시기 바랍니다.

그 동안 뷰가 창인지 여부를 확인하는 범주 또는 하위 클래스로 문제를 해결할 수 있습니다. 그렇다면 해당 창에서 rootViewController의 뷰를 가져 와서 대신 사용하십시오. 그렇게 할 수 있습니다.

0

iOS 8이 출시되었을 때 액션 시트에 문제가있었습니다. 당신이 제시하고있는 견해에 문제가있을 수 있습니다. 창보다는 실제 견해에 그것을 보여줄 수 있습니까? 처음에는 실험 해 보았고 최악의 경우 iOS 7과 8에 대한 특정 방식으로 쇼 방법을 마무리했습니다. PSTAlertController을 사용하여 알림 및 작업 시트를 관리하기 시작했습니다. UIAlertView, UIActionSheet 및 UIAlertController를 지원합니다. 그것은 어떤 것을 사용할 것인지를 결정할뿐만 아니라 iOS 7과 8을 계속 지원하면서 버튼에 대한 작업을 차단할 수있는 액세스 권한을 제공합니다. 당신이 실제로 그것을 볼 수

다른 사람이이 문제를 보는 경우
1
UIAlertController * alert= [UIAlertController 
          alertControllerWithTitle:@"Info" 
          message:@"You are using UIAlertController" 
          preferredStyle:UIAlertControllerStyleAlert]; 

UIAlertAction* ok = [UIAlertAction 
        actionWithTitle:@"OK" 
        style:UIAlertActionStyleDefault 
        handler:^(UIAlertAction * action) 
        { 
         [alert dismissViewControllerAnimated:YES completion:nil]; 

        }]; 
UIAlertAction* cancel = [UIAlertAction 
         actionWithTitle:@"Cancel" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          [alert dismissViewControllerAnimated:YES completion:nil]; 

         }]; 

[alert addAction:ok]; 
[alert addAction:cancel]; 

[self presentViewController:alert animated:YES completion:nil]; 
0

이 문제는 실제로 뒤에 온 스크린 키보드 액션 시트 를 표시하는 아이폰 OS 8 및 9에 의해 발생합니다. 화면의 나머지 부분이 어두워지는 것을 볼 수 있습니다. 천재.

간단한 솔루션을 표시하기 전에 한 줄의 코드를 추가하는 것입니다 UIActionSheet :

[self.view endEditing:true]; 

이 다시 당신의 아름다운 액션 용지가 보이지 만들기, 화면 키보드를 일축.

관련 문제