2
제 아들이 내보기의 "완료"버튼을 눌렀을 때 방금 이전보기로 넘기고 한 번 플립을 시작하고보기로 한 번 이상 시작할 수 있음을 발견했습니다. 전환 중입니다 (튀어 나오기). 두 번째 및 다음 히트는 동일한 액션을 다시 트리거하여 뷰가 보이지 않게 끝나고 내 기본 UIWindow와 같은 흥미로운 결과를 만듭니다.UIView가 전환되는 동안 내비게이션 버튼이 표시됨
내가 전화를해야한다고 생각하고있다 :
플립 전환에 관여하는 두 견해에[coming.view setUserInteractionEnabled: NO];
[going.view setUserInteractionEnabled: NO];
, 그리고 애니메이션이 종료 된 후 최종 뷰에서 다음
[coming.view setUserInteractionEnabled: YES];
합니다.
전보다 전이 된 동안 탭을 전역 적으로 사용하지 않도록 설정하는 것이 더 나은 방법이라고 생각했습니다. 어떻게 생각해?
- (void)switchTwoViews:(UIViewController *)view1 otherView:(UIViewController *)view2
{
/*
This method is called to switch views.
It flips the displayed view from the main view to the flipside view and vice-versa.
*/
UIViewController *coming = nil;
UIViewController *going = nil;
UIViewAnimationTransition transition;
[view1.view setUserInteractionEnabled: NO];
[view2.view setUserInteractionEnabled: NO];
if (view1.view.superview == nil) {
coming = view1;
going = view2;
transition = UIViewAnimationTransitionFlipFromLeft;
}
else {
coming = view2;
going = view1;
transition = UIViewAnimationTransitionFlipFromRight;
}
// coming.view.frame = [UIScreen mainScreen].applicationFrame;
// going.view.alpha = 1.0; //uncomment these lines if we want fading of views
// coming.view.alpha = 0.0;
NSArray *viewArray = [[NSArray alloc] initWithObjects:coming, going, nil];
[coming viewWillAppear:YES];
[going viewWillDisappear:YES];
[UIView beginAnimations:@"View Flip" context:viewArray]; {
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidEnd:finished:context:)];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
// coming.view.alpha = 1.0; //uncomment these lines if we want fading of views
// going.view.alpha = 0.0;
[UIView setAnimationTransition:transition forView:self.view cache:YES];
[self.view addSubview: coming.view];
}
[UIView commitAnimations];
}
- (void) animationDidEnd:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
NSArray *viewArray = context;
[((UIViewController *)[viewArray objectAtIndex:1]).view removeFromSuperview];
[[viewArray objectAtIndex:1] viewDidDisappear:YES];
[[viewArray objectAtIndex:0] viewDidAppear:YES];
[[[viewArray objectAtIndex:0] view] setUserInteractionEnabled: YES];
[viewArray release];
}