iPhone - Как я могу узнать, является ли URL файлом ресурса? - PullRequest
2 голосов
/ 04 мая 2011

Я перехватываю URL-адрес в shouldStartLoadWithRequest.

Как узнать, что это один из ресурсов моего проекта, который пытается открыть (например, с помощью [self.webView loadHTMLString:htmlContentFinal baseURL:[NSURL fileURLWithPath:bundlePath]];), или что-то еще?

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

Вы можете проверить, начинается ли строка URL с file://:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (request.URL.isFileURL) {
        // do some stuff
    }
}

Как я могу убедиться, что я тот, кто загрузил этот файл? Пользователь может сам написать этот URL в поле URL.

Вы можете реализовать -textFieldDidBeginEditing или -textFieldDidEndEditing и установить для некоторых логических свойств значение YES:

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if ([[textField.text substringToIndex:7] isEqualToString:@"file://"]) {
        self.fileUrlEnteredManually = YES;
    } else {
        self.fileUrlEnteredManually = NO;
    }
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (request.URL.isFileURL) {
        if (self.fileUrlEnteredManually) {
            // user entered "file://" manually
        } else {
            // user didn't
        }
    }
}

- (void)viewDidload {

    // ...

    fileUrlEnteredManually = NO;
    [webView loadRequest:yourLocalRequest];

}
0 голосов
/ 04 мая 2011

Отметьте [URL schema].Если это file, то это локальный файл.Однако это не обязательно будет ресурс пакета - это может быть файл в Документах вашего приложения, например.

Чтобы убедиться, что он находится в комплекте, сопоставьте начало пути с путем пакета, доступнымиз [NSBundle mainBundle].Хотя я не понимаю, почему.

...