2009-09-03 4 views
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]; 
} 

답변

1

가 setUserInteractionEnabled :

여기 전체보기 전환 코드 갈 수있는 방법이 될 것으로 보인다. 어떤 이의 제기?

관련 문제