弹出框旋转

发布于 2024-10-18 22:19:55 字数 1925 浏览 5 评论 0原文

我的弹出窗口有问题。我所做的是:

  1. 将我的应用程序从横向旋转到纵向
  2. 在弹出窗口中显示 MasterViewController
  3. 旋转回横向

注意: masterViewController = splitViewController左侧的View detailViewController = splitViewController 右侧的视图

在旋转结束时,masterViewController 向下移动,现在我在导航和导航之间有空白区域。视图控制器。 (对于图片:http://www.flickr.com/photos/vriel/5470798582/< /a>)。当我在旋转之前销毁弹出窗口(通过点击弹出窗口外部)时,这个问题不存在。

在我的detailViewController 中,我有以下代码:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {  
    if (popover && popover.popoverVisible) [popover dismissPopoverAnimated:YES];}

-(void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
    UIBarButtonItem* button = [UIBarButtonItem allocinitWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showPopover:)];
}

-(void)splitViewController: (UISplitViewController*)svc willShowViewController:  (UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
    if (self.navigationItem) [self.navigationItem setLeftBarButtonItem:nil animated:NO];
}


-(void)showPopover:(id)sender {
    UINavigationController* c = (UINavigationController*)[self getApplicationDelegateObject:@selector(masterViewController)];
    if (c) {  
        if (!popover) {
            popover = [UIPopoverController allocinitWithContentViewController:c];
        } else {
            popover.contentViewController = c;
        }
        if (popover) {
            [popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
        }
    }  
}

I have problem with popover. What I did were:

  1. Rotate my application from landscape to portrait
  2. Show MasterViewController in Popup
  3. Rotate Back To Landscape

Note:
masterViewController = View in the left side of splitViewController
detailViewController = View in the right side of splitViewController

At the end of rotation, masterViewController is shift down and now I have blank space between navigation & viewController. (for image: http://www.flickr.com/photos/vriel/5470798582/). This problem is not exist when I destroy the popover before the rotation (by tapping outside popover window).

In my detailViewController, I have the following code:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {  
    if (popover && popover.popoverVisible) [popover dismissPopoverAnimated:YES];}

-(void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
    UIBarButtonItem* button = [UIBarButtonItem allocinitWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showPopover:)];
}

-(void)splitViewController: (UISplitViewController*)svc willShowViewController:  (UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
    if (self.navigationItem) [self.navigationItem setLeftBarButtonItem:nil animated:NO];
}


-(void)showPopover:(id)sender {
    UINavigationController* c = (UINavigationController*)[self getApplicationDelegateObject:@selector(masterViewController)];
    if (c) {  
        if (!popover) {
            popover = [UIPopoverController allocinitWithContentViewController:c];
        } else {
            popover.contentViewController = c;
        }
        if (popover) {
            [popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
        }
    }  
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凡间太子 2024-10-25 22:19:55

终于找到问题所在

之前:
在我创建自己的栏按钮项目来处理旋转之前。事实上,我不应该担心弹出窗口,因为苹果已经处理它

-(void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {

UIBarButtonItem* button = [UIBarButtonItem allocinitWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showPopover:)];
}

正确的一个:

-(void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
if (self.navigationItem) [self.navigationItem setLeftBarButtonItem:barButtonItem animated:NO];
}

Finally found where the problem is

previously:
Before I create my own bar button item to handle rotation. In fact, I should not worry about the popover because apple already take care of it

-(void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {

UIBarButtonItem* button = [UIBarButtonItem allocinitWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showPopover:)];
}

correct one:

-(void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
if (self.navigationItem) [self.navigationItem setLeftBarButtonItem:barButtonItem animated:NO];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文