Ловля модальных UIWebView ссылок, касаний - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть контроллер представления, и я перехватываю касания ссылок внутри веб-представлений, которыми он управляет.

Мой основной контроллер просмотра имеет этот метод.

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

{
    //I can see this request come in upon a touch
    NSURL *url = request.URL;
    NSString *urlString = url.absoluteString;
    NSLog(@"raw: %@", urlString);

    //do some stuff (like figure out what capturedFilename is) 
    ExplainViewController *explanation = [[ExplainViewController alloc] initWithNibName:@"ExplainViewController" bundle:nil file:capturedFilename];
    [self.navigationController presentModalViewController:explanation animated:YES];
}

И это правильно загружает модальное представление.
ExplainViewController имеет сам веб-вид. Когда пользователь касается ссылки в ExplainViewConroller, я бы тоже хотел обработать этот запрос (и представить другое модальное представление) .

ExplainViewController имеет это, но я не получаю активности журнала ни от одного метода (ни от предыдущего, ни от предыдущего):

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType 
{
    NSURL *url = request.URL;
    NSString *urlString = url.absoluteString;
    NSLog(@"raw: %@", urlString);
}

Я хочу знать, куда направляется этот запрос касания ссылки и как его перехватить.

Оба упомянутых контроллера вида используют это в своих .h <UIWebViewDelegate>

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

Вы упоминаете, что оба контроллера представления соответствуют протоколу UIWebViewDelegate, но являются выходом делегата UIWebView в наконечнике для ExplainViewController.h, установленному на экземпляр ExplainViewController. Он не будет вызывать метод, если не установлено свойство делегата UIWebView.

0 голосов
/ 28 декабря 2010
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {

    BrowserController *browserController = [[BrowserController alloc] initWithUrl:request.URL.absoluteString];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browserController];
    [self.navigationController presentModalViewController: navController animated:YES];
    [browserController release];
    [navController release];

    return NO;
}
return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...