我在iOS上使用带有Phonegap的Childbrowser插件在我的应用程序中进行了Facebook连接。一切正常,但是当打开“浏览器”窗口时,它将显示全屏。我如何才能将其仅弹出在角落的一个小窗口中,然后退出工作?

最佳答案

我需要同样的东西

由于我在这里找不到现成的解决方案,所以我决定自己动手...我看到这是一篇很老的文章,所以我想您已经找到了解决方案,但以防万一您和其他人找不到可能会发现它有用,并且可以节省几分钟:)

注意:我的目标仅是iPad,所以我选择了UIPopoverViewController,对于iPhone,可以使用其他ViewController,但是想法是一样的...

我所做的是编辑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,合成了弹出框,并进行了更改:

//[ 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),完成后和/或在弹出窗口之外单击时会很好地关闭...

最好的祝福,
Srdjan

09-30 00:15