2012-07-09 1 views
0

특정 프레임 CGRectMake (40, 50, 400, 500)에서 aNavController를 modalViewController로 표시합니다. 어느 것이 잘 작동하는지. 이제 self (modalViewController가 제공되는 viewcontroller) 버튼이 있습니다. 버튼을 누르면 aNavController에 일부 메시지가 표시됩니다. 그러나 문제는 내가 modalViewController를 제시 할 때입니다. 전체 화면 영역이 흐리게 표시되거나 비활성화되었습니다. 그래서, 자기 자신의 버튼을 터치/클릭 할 수 없습니다.ModalViewController 현재 viewController 디밍/비활성화 사용 안 함

다음은보기 컨트롤러를 표시하는 코드입니다. 나는 생각했다, 나는 여기에서 무엇인가 놓치고있다. 도와주세요. 미리 감사드립니다.

aNavController.modalPresentationStyle = UIModalPresentationFormSheet; 
anavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:aNavController animated:YES]; 
aNavController.view.superview.frame = CGRectMake(40,50, 400, 500); 

답변

0

마지막으로 UIModalPresentationFormSheet와 같은 방식으로 작동하는 문제를 해결할 수 있습니다.

나는 [[UIApplication sharedApplication] keyWindow]에 서브 뷰로 aNavController를 추가했으며 이것이 내 모든 문제를 해결합니다.

의견을 보내 주셔서 감사합니다.

1

presentModalViewController 모달 대화 상자를 만듭니다. 모달 뷰 컨트롤러가 올라가면 모달 뷰가 닫힐 때까지 사용자는 부모 뷰에서 아무 것도 할 수 없습니다.

+0

네, 맞습니다. 사용자는 모델보기가 닫힐 때까지 부모보기에서 아무 것도 할 수 없습니다. 나는 그 일을 알고있다, 여기에 나는 그것에 대한 해결 방법을 원한다. 어쨌든, 귀하의 의견에 감사드립니다. –

0

UIAlertViewUIAlertView을 동시에 인스턴스화하는 것은 UIAlertView의 대표 메서드 clickedButtonAtIndex에서 모달보기를 호출하는 것과 같습니다.

과 같이

:

- (IBAction)clickedMyButton:(id)sender 
{ 
    UIAlertView *alertView = [[UIAlertView alloc] 
       initWithTitle: @"Title" 
       message: @"Message" 
       delegate:self 
       cancelButtonTitle:@"Close Button" 
       otherButtonTitles:@"Modal Button", @"Some Other Button", nil]; 
    [alertView show]; 
} 



- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) { 
     NSLog(@"User Selected Cancel"); 
    } 
    else if (buttonIndex == 1) { 
     NSLog(@"Modal Button Clicked"); 
     aNavController.modalPresentationStyle = UIModalPresentationFormSheet; 
     anavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
     [self presentModalViewController:aNavController animated:YES]; 
     aNavController.view.superview.frame = CGRectMake(40,50, 400, 500); 
    }else { 
     NSLog(@"Some Other Button Clicked"); 
    } 
} 

또는 당신이 당신의 UIAlertView, 당신의 탐색 컨트롤러의 상단에 표시 위를 무시하고 단순히 탐색 컨트롤러 - (void)viewDidAppear:(BOOL)animated 방법까지 경고를 호출 기다려야을 기원합니다.

또한 꼭 필요한 경우를 제외하고는 화면 경계 내에서 프레임을 변경하는 것이 좋습니다. 예 : CGRectMake(40, 50, 320, 480);