0

我正在创建一个只显示某些网站(oDesk 和 Trello)的自定义浏览器。

自定义浏览器

我使用 Web View 来显示它,将它嵌入到选项卡控件中。但我现在意识到,如果它需要文件附件,它并没有显示浏览文件对话框。

有什么解决方法吗?或者,这是 WebView 控制器的限制吗?

编辑:我已经检查过了,它发生在任何需要文件附件的站点(好吧,实际上只是测试 gmail 和odesk )。当我点击它时,什么也没有发生。没有打开浏览对话框。这两张照片:oDesk 附件: 桌面

邮箱附件:

邮件

编辑这是加载相关网站的代码:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[webViewOdesk mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.odesk.com"]]];
    [[webViewTrello mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://trello.com"]]];
    [[webViewGmail mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://gmail.com"]]];
    [[webViewGoogle mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]];

    [window setReleasedWhenClosed:NO]; 
}

我在这里添加了另外两个网站:gmail 和 google

4

1 回答 1

0

OSX webkit 默认不为您实现浏览器面板,您需要设置 UI 委托并自己制作。

- (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id < WebOpenPanelResultListener >)resultListener
{
    NSOpenPanel* openDlg = [NSOpenPanel openPanel];

    [openDlg setCanChooseFiles:YES];

    [openDlg setCanChooseDirectories:NO];

    // process the files.

    if ( [openDlg runModal] == NSOKButton )
    {
        NSArray* URLs = [openDlg URLs];
        for (int i = 0; i <[URLs count]; i++) {
            NSString *filename = [[URLs objectAtIndex:i]relativePath];
            [resultListener chooseFilename:filename];
        }
    }

}
于 2013-05-29T07:30:49.427 回答