가지고 있는 아이폰 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는 기기를 회전해도 회전은 안하는 것 같다.
일단 이번 이슈는 이렇게 해결
'프로그래밍 > iOS' 카테고리의 다른 글
[ios] simulator용 라이브러리와 device용 라이브러리 합치기, lipo (0) | 2015.04.09 |
---|---|
[ios] UIButton 코드로 추가하기 (0) | 2015.04.09 |
[ios] 버전 가져오기 (0) | 2015.04.09 |
[ios] -ObjC (other linker flag) (0) | 2015.04.09 |
[ios] presetPhoto 고찰 (0) | 2015.04.09 |