在keyWindow转换时,iPad方向通知会丢失

时间:2010-12-01 18:05:34

标签: ipad uiview transitions

我在应用程序的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_不会收到方向通知。为什么呢?

1 个答案:

答案 0 :(得分:0)

嗯,这不是一个很好的解决方案,但我找到了避免这个问题的方法。首先,我认为问题的出现是因为,在动画时,两个视图控制器都接收到方向通知,而我猜测,是否会在窗口中添加和删除并引发问题。我不确切知道这是否与视图层次结构相关(我认为这是正确的,但我不确定)是否存在问题。

所以,我使用的解决方案是将LoginViewController作为SplitViewController的ModalViewController,即主控制器,并在显示时使用FlipHorizo​​ntal转换。

解决了这个问题。