3

有没有人知道如何在 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 上的方向改变之前关闭弹出框?

4

2 回答 2

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

一旦旋转确实发生了变化,这将执行此操作,然后您可以在设备方向上执行您想要的操作。否则你需要监听视图控制器并在那里发送消息。

于 2013-09-14T23:23:22.870 回答
0

尝试这个

- (void)viewDidLayoutSubviews
{
    [popOverController dismissPopoverAnimated:YES];
}
于 2016-05-05T07:14:59.157 回答