Wil*_*rts 9 macos cocoa objective-c osx-lion
我正在构建一个mac应用程序,并希望能够使用标准下载系统来浏览网页和从网站下载文件,就像你在使用safari时看到的那样.
当我在应用程序中单击指向.zip或.nzb的链接时,它什么也没做!有没有办法从应用程序允许这个?
在此先感谢任何帮助:)
Rob*_*ger 11
Safari中的下载管理器由Safari实现,而不是由WebKit实现,因此您无法"免费"获得该功能,只是构建它的工具.
为了能够下载文件,您需要将对象指定WebPolicyDelegate为其中WebView并实现webView:decidePolicyForMIMEType:request:frame:decisionListener:委托方法.
在该方法中,必须WebPolicyDecisionListener在作为decisionlistener参数传递给方法的对象上调用其中一个协议方法.三种WebPolicyDecisionListener协议方法是ignore,use或download.对于要下载的任何MIME类型,必须调用download作为listener参数传递的对象:
- (void)webView:(WebView *)webView
decidePolicyForMIMEType:(NSString *)type
request:(NSURLRequest *)request
frame:(WebFrame *)frame
decisionListener:(id < WebPolicyDecisionListener >)listener
{
if([type isEqualToString:@"application/zip"])
{
[listener download];
}
//just ignore all other types; the default behaviour will be used
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要将对象指定为您的下载代理WebView.此对象将发送所有NSURLDownloadDelegate协议消息以及WebDownload
委托消息.您可以使用这些消息选择文件的下载位置,以及实现Safari等下载管理器UI.
我突然想到你可以实现 WebView 的委托来检测用户何时单击链接 - 然后检查扩展名,如果它不是 html/php/whatever 然后手动下载文件
以下是有关如何捕获按下的链接的问题(和答案)的链接:
Cocoa WebKit/WebView 委托用于位置更改?(用户点击链接、javascript 操作等)
| 归档时间: |
|
| 查看次数: |
5075 次 |
| 最近记录: |