Google的同意屏幕不适合iPad popover

时间:2014-11-27 19:32:46

标签: ios objective-c ipad google-drive-api google-oauth

我正在使用GTMOAuth2ViewControllerTouch在弹出窗口中显示Google云端硬盘的登录屏幕。我通过登录 - 一切都很好 - 网页视图显示同意屏幕。但是,同意屏幕数据的大小是弹出窗口大小的两倍(320 x~460),要求用户滚动以查看“接受”按钮。内容的所有方面都有很多空白区域,但即使没有它,我也认为它不适合。

以下是运行iOS 7(实物大小)的Retina显示屏iPad 2的外观:

enter image description here

enter image description here

我尝试将XIB中的Web视图更改为“缩放页面以适应”,但它没有任何效果。我没有对XIB做任何其他改动;容器视图和Web视图都是“缩放以填充”。文件的自动布局已关闭。

以下是我如何调用登录视图控制器。我给了当前正在进行的popover的控制器。该控制器在导航堆栈中只有几层。

- (void) attemptLogin: (UIViewController *) controller
    {
        GTMOAuth2ViewControllerTouch *newController = nil;

        if (![self isUserLoggedIn])
            {
            newController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:kGTLAuthScopeDrive
                clientID:_googleAppKey clientSecret:_googleAppSecret keychainItemName:_googleKeychainKey
                delegate:self
                finishedSelector:@selector(viewController:finishedWithAuthorizer:error:)];
            [[controller navigationController] pushViewController:newController animated:YES];
            [newController release];
            }
    }

这不是恐龙杀手小行星的命令,但肯定是令人讨厌的。我做错了什么,或者这个看似懒散的方式显示出“应该”工作的方式?

2 个答案:

答案 0 :(得分:0)

在ViewController的viewDidLoad方法中使用以下代码:

[self.myWebView setFrame:CGRectMake(self.view.frame.origin.x,
                               self.view.frame.origin.y,
                               self.view.frame.size.width,
                               self.view.frame.size.height)];

这将强制内容在帧大小内显示。

答案 1 :(得分:0)

我发现修复此问题的唯一方法是在创建授权视图控制器时更改弹出窗口的大小:

[newController setContentSizeForViewInPopover:CGSizeMake(768, 620)];

有点蠢,但它解决了这个问题。