0

アプリの keyWindow でアニメーションを実行しました。

[UIView beginAnimations:kAnimationLogin context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window_ cache:NO];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];

[window_ addSubview:splitViewController_.view];

[UIView commitAnimations]; 

[loginViewController_.view removeFromSuperview];

これは正常に動作します。その後、ユーザーがログアウトすると、遷移は逆になります

[UIView beginAnimations:kAnimationLogout context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window_ cache:NO];    
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];

[window_ addSubview:loginViewController_.view];

[UIView commitAnimations];

[splitViewController_.view removeFromSuperview];

これが問題です。現在、loginViewController_ と splitViewController_ は向きの通知を受け取りません。なんで?

4

1 に答える 1

0

まあ、それは素晴らしい解決策ではありませんが、私はその問題を回避する方法を見つけました。まず、問題が発生するのは、アニメーション中に、両方のビューコントローラが方向通知を受信し、ウィンドウへの追加とウィンドウからの削除を行って問題を発生させるためだと思います。ビュー階層に関連する問題であるかどうかは正確にはわかりません(正しいと思いますが、よくわかりません)。

したがって、私が使用する解決策は、LoginViewControllerをSplitViewControllerのModalViewController、つまりメインコントローラーとして配置し、表示中にFlipHorizo​​ntalトランジションを使用することです。

それで問題は解決します。

于 2012-12-13T13:22:04.053 に答える