2012-11-14 39 views
3

是否有人在如何可以我以前方向變化在iOS 6 駁回酥料餅一個想法我已經試過如下:如何在iOS 6的方向更改之前關閉彈出窗口?

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 

    if ([self.popoverController isPopoverVisible]) { 
     [self.popoverController dismissPopoverAnimated:NO]; 
    } 
} 

但它不是爲我工作。輪換之後,彈出窗口仍然存在。

- (BOOL) shouldAutoRotate 

沒有在我的viewController中調用導致它在SplitViewController和NavController中。 我讀過,我可以從這個容器繼承轉發shouldAutorotate,但我不想這樣做是因爲不同的原因。 我不想在orientationchange(在didRotateFrom ...)之後關閉popover,因爲它很醜。

你有什麼想法,我怎麼能在iOS 6上的方向改變之前解僱popover?

+0

出於好奇,你能有什麼可能的原因不想繼承你的根視圖控制器?我不確定還有另一種方法來捕捉旋轉事件。 – AMayes

回答

0
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(deviceOrientationDidChange:) 
              name:UIDeviceOrientationDidChangeNotification 
              object:nil]; 

這將做它一旦旋轉確實改變,那麼你可以做你想要的設備方向。否則,您需要偵聽視圖控制器並在那裏發送消息。

+0

嗨達倫,正如我所說,我需要在取向變化之前得到通知。 – Dave

0

試試這個

- (void)viewDidLayoutSubviews 
{ 
    [popOverController dismissPopoverAnimated:YES]; 
}