내 응용 프로그램에는 동시에 다른 RootViewController 인 다른 모든 UIViewController에 대해 하나의 부모보기 컨트롤러 (MainViewController.h/m - UIViewController, NIB 파일 없음)가 있습니다. 자동 레이아웃이 꺼져 있도록iOS의 컨테이너보기 컨트롤러를 올바르게 사용하는 방법
내 애플 .. 아이폰 OS에게
하이어 일부 코드 5를 지원해야합니다
AppDelegate.m에서를
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.mainViewController = [[MainViewController alloc] init];
[self.window setRootViewController:self.mainViewController];
[self.window makeKeyAndVisible];
return YES;
}
MainViewController.m에서
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
if ([[UIScreen mainScreen] bounds].size.height == 568) {
_homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController~iPhone5" bundle:nil];
} else {
_homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController~iPhone" bundle:nil];
}
} else {
_homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
}
[self addChildViewController:_homeViewController];
[self.view addSubview:_homeViewController.view];
[_homeViewController didMoveToParentViewController:self];
}
- (void)changeFromViewController:(UIViewController*)fromViewController toViewController:(UIViewController*)toViewController withDuration:(NSNumber*)duration {
toViewController.view.frame = self.view.bounds;
[toViewController.view layoutIfNeeded];
[self addChildViewController:toViewController];
[self transitionFromViewController:fromViewController
toViewController:toViewController
duration:[duration floatValue]
options:UIViewAnimationOptionTransitionCrossDissolve
animations:nil
completion:^(BOOL finished) {
[toViewController didMoveToParentViewController:self];
[fromViewController willMoveToParentViewController:nil];
[fromViewController removeFromParentViewController];
}];
}
HomeViewController * .xib에는 7 개의 UIButton이 있습니다. 그들 중 하나가 만진 경우 MainViewController 클래스는 한 ChildViewController (HomeViewController 등)에서 다른 것으로 변경하기 위해 호출 중입니다. 이제 문제에 대한
- (IBAction)firstButton_click:(id)sender {
[(MainViewController *)self.parentViewController setAnimationForChangeFrom:self toStartTestSettingsViewControllerWithDuration:[NSNumber numberWithDouble:0.4] andWithDelay:[NSNumber numberWithDouble:0.1]];
}
HomeViewController.m.
iOS 6 이상의 iPhone (장치 또는 시뮬레이터)에서 UIButtons는 몇 번의 터치만으로 반응합니다. 뷰의 하단에 배치 된 버튼은 더 많이 터치 한 다음 맨 위에 배치해야합니다. 여러 번 터치 한 후 이벤트가 시작되고보기가 변경되면이보기로 돌아올 때 모든 것이 정상적으로 작동합니다. 이 문제는 iPhone iOS 6.x에서만 발생합니다. iPhone iOS 5.x 및 iPad 5.x-6.x에서 정상적으로 작동합니다.
HomeViewController RootViewController를 만들면 물론 버튼이 이벤트에 응답합니다. 하지만 UIViewAnimationOptionTransitionCrossDissolve Animation [UIViewController transitionFromViewController : toViewController : duration : options : animations : completion :]으로 변환 할 수 없습니다.보기에는 동일한 부모보기 컨트롤러가 있어야하기 때문입니다. 내가 잘못 했어? 벌레 야? 어떤 해결책이 있습니까? 도움을 주시면 대단히 감사하겠습니다.