0

基本的に、タップされているファイル拡張子の種類(png、zipなど)をwebviewがどのように認識してから、別のビューコントローラーをプッシュするかを知る必要があります。

ファイル拡張子コードなしでこれを試したことがありますが、別のビューがうまくプッシュされます。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
        if(navigationType == UIWebViewNavigationTypeLinkClicked) {
            NSURL *theRessourcesURL = [request URL];


            DetailViewController *vc = [[DetailViewController alloc] init];
            [vc downloadURL:theRessourcesURL userInfo:nil];
            [self.navigationController pushViewController:vc animated:YES];

            dlvc.delegate = self;

        }

        return YES;
    }

動かないコード:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {        

    if(navigationType == UIWebViewNavigationTypeLinkClicked) {
        NSURL *theRessourcesURL = [request URL];
        NSString *fileExtension = [theRessourcesURL pathExtension];
        if ([fileExtension isEqualToString:@"png"]) {

            MYViewController *vc = [[MYViewController alloc] init];
            [dlvc downloadURL:theRessourcesURL userInfo:nil];
            [self.navigationController pushViewController:vc animated:YES];

            vc.delegate = self;
        }            
        else{}
    }       
    return YES;
}

ほとんどの部分で働いています。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {


    if(navigationType == UIWebViewNavigationTypeLinkClicked) {
        NSURL *theRessourcesURL = [request URL];
        NSString *fileExtension = [theRessourcesURL pathExtension];
        NSLog(@"fileExtension is: %@", fileExtension);
        if ([fileExtension isEqualToString:@"php"] || [fileExtension isEqualToString:@".png"] || [fileExtension isEqualToString:@".zip"] || [fileExtension isEqualToString:@".deb"] || [fileExtension isEqualToString:@".jpg"] || [fileExtension isEqualToString:@".mp3"]) {

            NSError *error = nil; //error setting
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
            NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Downloads"];

            if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
                [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder

            HCDownloadViewController *dlvc = [[HCDownloadViewController alloc] init];
            [dlvc downloadURL:theRessourcesURL userInfo:nil];
            [self.navigationController pushViewController:dlvc animated:YES];

            dlvc.delegate = self;

            return NO;
        }       
        else{}
    }
        return YES;
}

インターフェイスビルダーを使用していないため、これをスターターベースとして使用しようとしても成功しませんでした。したがって、IBActions を使用できるかどうかはわかりません (使用できる場合、適切に実装する方法がわかりません)。UIWebView からファイルをダウンロードして再度開く方法

どんな助けでも大歓迎です。

4

1 に答える 1

0

if ([fileExtension isEqualToString:@"png"] || ...) を if(navigationType == UIWebViewNavigationTypeLinkClicked){} の中に入れて、もう一度やり直してください。

于 2013-06-13T01:47:05.723 に答える