我创建的custom browser只显示某个网站(oDesk和Trello)。
我使用Web View显示它,将其嵌入到选项卡控件中。但我现在意识到,如果它需要文件附件,它就不会显示浏览文件对话框。
这有什么工作吗? 或者,这是WebView控制器的限制吗?
EDITED: 我检查过这个问题,它发生在需要文件附件的任何网站(好吧,只是测试gmail和odesk)。当我点击它时,没有任何反应。没有打开浏览对话框。这两张照片: oDesk附件:
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
答案 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];
}
}
}