在iOS中更改Phonegap的Childbrowswer插件的尺寸

时间:2011-09-21 19:36:17

标签: cordova

我在iOS上使用带有Phonegap的Childbrowser插件在我的应用程序中进行facebook连接。这一切都有效,但是当Childbrowser窗口打开时,它会全屏显示。如何让它只是弹出一个角落里的小窗口,然后退出工作呢?

1 个答案:

答案 0 :(得分:2)

我需要同样的事情......

由于我在这里找不到现成的解决方案,所以我决定自己做...我觉得这个帖子非常老,所以我猜你已经找到了解决办法,但万一你没有而其他人可能会发现它很有用并节省几分钟:)

注意:我的目标是仅限iPad ,因此我选择了UIPopoverViewController,对于iPhone,还有其他可以使用的ViewControllers,但这个想法是一样的......

我所做的是编辑ChildBrowserCommand.h并添加:

#define POPOVER_WIDTH 400
#define POPOVER_HEIGHT 300

@interface ChildBrowserCommand : PGPlugin <ChildBrowserDelegate, UIPopoverControllerDelegate>  {
    ChildBrowserViewController* childBrowser;
    UIPopoverController *popover;
}

@property (nonatomic, retain) ChildBrowserViewController *childBrowser;
@property (nonatomic, retain) UIPopoverController *popover;

此外,我编辑了ChildBrowserCommand.m,合成了popover,并更改了:

//[ cont presentModalViewController:childBrowser animated:YES ];

使用:

if (popover == NULL)
{
    popover = [[UIPopoverController alloc] initWithContentViewController:childBrowser];
    [popover setPopoverContentSize:CGSizeMake(POPOVER_WIDTH, POPOVER_HEIGHT) animated:YES];
    popover.delegate = self;
}
[popover presentPopoverFromRect:cont.view.bounds inView:cont.view permittedArrowDirections:0 animated:YES];

并添加了解雇线:

-(void) onClose
{
    NSString* jsCallback = [NSString stringWithFormat:@"ChildBrowser._onClose();",@""];
    [self.webView stringByEvaluatingJavaScriptFromString:jsCallback];

    [popover dismissPopoverAnimated:YES];
}

最后,我从ChildBrowserViewController.m删除了(已注释掉)dismissModal(顺便说一句,首先是错误的地方):

-(void)closeBrowser
{   
    if(delegate != NULL)
    {
        [delegate onClose];     
    }

    //[super dismissModalViewControllerAnimated:YES];
}

结果,ChildBrowser在UIPopoverViewController中以指定的大小打开(在我的情况下没有箭头,如果你想要一些,只需指定UIPopoverArrowDirection),在完成时和/或在弹出窗口外点击时很好地解散...

最诚挚的问候, 斯尔詹