2014년 10월 29일 수요일

UIAlertView 를 모달상태처럼 띄우기

참 희안한게...아이폰 프로그래밍에서 메시지박스(경고창)형태의 UI가 있긴 있는데, 요놈이 모달 상태가 아니다. 즉, 띄우고 확인버튼을 누를때까지 대기하는 것이 아니라, 걍 슝~하고 지나간다. 확인해보니 UIActionSheet도 비슷하게 동작한다.

어찌됐건 간에 검색해보니, 다음과 같은 방법이 있다. UIAlertView를 띄워놓고 입력받아서 UIAlertView가 사라질 때 까지 기다리는 것 같다.

출처 : http://lomohome.com/320

- (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString*)message initiatedByFrame:(WebFrame *)frame{

NSLog(@"javascript ConfirmPanel : %@",message);


UIAlertView *confirmDiag = [[UIAlertView alloc] initWithTitle:nil message:messagedelegate:self cancelButtonTitle:NSLocalizedString(@"Yes", @"예")otherButtonTitles:NSLocalizedString(@"No", @"아니오"), nil];

[confirmDiag show];


//버튼 누르기전까지 지연.

while (confirmDiag.hidden == NO && confirmDiag.superview != nil)

[[NSRunLoop mainRunLoop] runUntilDate:[NSDatedateWithTimeIntervalSinceNow:0.01f]];


[confirmDiag release];


return diagStat;

}



//요놈은 UIAlertViewDelegate 를 구현하여 버튼이 눌렸을때 실행될 메소드

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

//index 0 : YES , 1 : NO


if (buttonIndex == 0){

//return YES;

diagStat = YES;

} else if (buttonIndex == 1) {

//return NO;

diagStat = NO;

}


}


괜춘한 방법인듯

댓글 없음: