본문 바로가기

프로그래밍/iOS

[ios] UIAlertView rotate, UIAlertController

가지고 있는 아이폰 5s에서는 alertview회전해도 아무 문제 없길래 안심하고 있었더니

아이폰6, ios버전 8.1.2 에서 기기 회전하면 alertview가 아래와 같이 깨진다는 이슈가 왔다.


스샷 보기


이놈의 애플 8.1.2씩이나 업데이트하고 아직도 문제가 많다.


저거 그냥 UIAlertView다. 특별히 뭘 한게 아니다.


그래서 애플 버그라하고 넘어가려했지만, 고객사는 그렇게 만만하지 않다.

바로 해결해 달라고 한다...


그래서 찾아보니 ios8부터는 UIAlertController라는 것을 사용한다고 한다.


따라서 비교 구현


1. 기존 UIAlertView구현

- alertView 띄우기

// AlertView 생성

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"OCR인식종료" message:@"OCR인식을 종료하시겠습니까?" delegate:self cancelButtonTitle:@"아니오" otherButtonTitles:@"", nil];

// AlertView 띄우기

    [alert show];

- alertView에서 예를 눌렀을 때 동작하는 delegate함수

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

    if (buttonIndex == 1)

    {

       // 할 일

    }

 

}


2. UIAlertController 사용 법

// AlertController 생성

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"OCR인식종료" message:@"OCR인식을 종료하시겠습니까?" preferredStyle:UIAlertControllerStyleAlert];

// 아니오 동작 생성

        UIAlertAction *cancelAction = [UIAlertAction

                                       actionWithTitle:NSLocalizedString(@"아니오", @"Cancel action")

                                       style:UIAlertActionStyleCancel

                                       handler:^(UIAlertAction *action)

                                       {

                                           // 아니오 눌렀을때 동작

                                       }];

// 예 동작 생성

        UIAlertAction *okAction = [UIAlertAction

                                   actionWithTitle:NSLocalizedString(@"", @"OK action")

                                   style:UIAlertActionStyleDefault

                                   handler:^(UIAlertAction *action)

                                   {

                                       // 예 눌렀을 때 동작

                                   }];

// 동작을 AlertContoller에 추가        

        [alert addAction:cancelAction];

        [alert addAction:okAction];

 // AlertController 띄우기

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


UIAlertController는 기기를 회전해도 회전은 안하는 것 같다.


일단 이번 이슈는 이렇게 해결