我在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