오버레이 컨트롤러를로드하는 앱이 있습니다 (스캔 할 수 있도록 카메라를 보여줍니다). 그것은 아이폰에서 잘 작동하고 두 번째 호출 후에는 iPad에서 잘 작동합니다. 설명하겠습니다.컨트롤은 초기로드시 UIPopoverController에서 응답하지 않지만 후속로드에서는 수행합니까?
나는보기 컨트롤러를 모달로로드하는 UIButtonBarItem이 있습니다. 컨트롤러에는 몇 가지 컨트롤이 있으며, 대부분의 버튼 (펜촉으로 정의)이 있습니다. iPhone에서 컨트롤러 (UIButtonBarItem 액션에 응답하여)를로드하면로드되고 모든 버튼이 매번 올바르게 작동합니다.
하지만 ... 내가 UIPopoverController를 사용하여 동일한보기 컨트롤러를로드하면 처음로드 할 때 아무 버튼도 응답하지 않습니다. 따라서 컨트롤러 외부의 화면을 터치하고 컨트롤러를 닫습니다. 그런 다음 컨트롤러가로드 될 때 동일한 동작 버튼을 다시 터치하면보기 컨트롤러의 모든 컨트롤이 잘 작동합니다. 정말 위드!
[가능한 내역] 버튼을 처음로드했을 때 버튼이 이상한 위치에 배치되었습니다. 이후의 각 호출에는 버튼이 올바른 위치에 표시됩니다. 펜촉에서 "Autoresize subviews"를 비활성화하여 작동하도록했습니다. 버튼이 올바른 위치에 있지만 처음으로이 팝업을로드 할 때 여전히 응답하지 않습니다.
다음은 UIButtonBarItem에 응답하는 데 사용하는 코드입니다.
-(void)launchOverlayController:(id)sender
{
if([pickerControllerPopover isPopoverVisible])
{
[pickerControllerPopover dismissPopoverAnimated:YES];
pickerControllerPopover = nil;
return;
}
// Deselect any selected cell
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:NO];
// Working code that shows the overlay (camera on) but the overlay takes the whole screen
SRSScanVINViewController *scanVINViewController = [[SRSScanVINViewController alloc] init];
[pickerController setOverlay:scanVINViewController];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:scanVINViewController];
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
pickerControllerPopover = [[UIPopoverController alloc] initWithContentViewController:pickerController];
[pickerControllerPopover setDelegate:self];
[pickerControllerPopover setPopoverContentSize:CGSizeMake(320.0f, 460.0f)];
[pickerControllerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
else
{
[self presentViewController:pickerController animated:YES completion:nil];
}
}
나는 완전히 아이디어가 없습니다. 오버레이 컨트롤러 내의 컨트롤이 처음을 제외하고 항상 호출 할 때마다 제대로 작동하는지 알 수 없습니다.
사전에 도움을 주셔서 감사합니다.
일반 모달보기 컨트롤러 및 PopoverController 아닙니다. 일반 컨트롤러를 사용하는 경우 처음 포함 할 때마다 작동합니다. 할 일이있는 것 같습니다. PopoverController를 사용합니다. – JustLearningAgain
나는 Popover 컨트롤러를 처음 시작했을 때 거의 즉시 작동한다는 것을 알았습니다. 물론 작동하지 않습니다. 이후에 실행할 때마다 정상적으로 작동하지만로드하는 데 2 초 정도 더 걸립니다. 분명히 두 번째로로드 할 때마다 (그리고 그 이후에 매번) 추가적으로 일어나는 일이 있습니다. 디버거를 밟았으며 다르게 호출 된 메서드를 볼 수 없습니다. popover 컨트롤러가 처음으로로드 될 때 (또는 완료되지 않은) 무언가가 있습니까? – JustLearningAgain
문제를 보여주는 작은 데모 프로젝트를 만듭니다. 공용 폴더의 DropBox 계정에 업로드하고 질문을 업데이트하십시오. 실제 코드를 수정하면 누구나 생산성을 향상시킬 수 있습니다. –