为什么我的Cocoa WebView无法显示浏览文件对话框?

时间:2013-01-14 00:20:37

标签: cocoa webview

我创建的custom browser只显示某个网站(oDesk和Trello)。

Custom browser

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

这有什么工作吗? 或者,这是WebView控制器的限制吗?

EDITED: 我检查过这个问题,它发生在需要文件附件的任何网站(好吧,只是测试gmail和odesk)。当我点击它时,没有任何反应。没有打开浏览对话框。这两张照片: oDesk附件: oDesk

Gmail附件:

GMail

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

- (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

1 个答案:

答案 0 :(得分: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];
        }
    }

}