проблемы с отображением фактического URL страницы в моем приложении - PullRequest
0 голосов
/ 10 января 2012

Я делаю браузер для iPad, и у меня есть небольшая проблема.Например, когда я захожу в Google, я пишу направление Google в textField.Проблема в том, что когда я меняю веб-страницу, она все равно говорит http://www.google.com/.Вот мой код:

-(IBAction)buttonpressed2:(id)sender {

    url = [NSURL URLWithString:[textField text]];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
    [webView isEqual:textField.text];
}

Как я могу заставить textField показывать страницу, которую я сейчас смотрю, а не первый URL, введенный в поле?

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Сначала убедитесь, что при настройке webView вы присваиваете UIWebViewDelegate для self

Затем реализуете метод делегата: webViewDidFinishLoad, например:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    NSURLRequest *currentRequest = [webView request];
    NSURL *currentURL = [currentRequest URL];

    //This will log the current url
    NSLog(@"Current URL is %@", currentURL.absoluteString);

    //Then to display it in the textField
    textfield.text = currentURL.absoluteString;
 }

Редактировать:

Делегат - это особый набор методов, ожидающих события.Когда это событие происходит, вызывается соответствующий метод.Вышеприведенный метод является одним из методов делегата для UIWebView - когда с webView происходит определенное событие, в этом случае, когда webViewDidFinishLoad, этот метод вызывается автоматически, и мы можем ответить как таковой.Чтобы установить делегата, мы можем действовать одним из двух способов:

  1. Если вы создали webView в коде, это примерно так:

    UIWebView *webView = [[UIWebView alloc] init...]
    

    тогда все, что вам нужно сделать, это добавить следующую строку кода:

    webView.delegate = self;
    
  2. Однако вы, возможно, также создали webView в конструкторе интерфейсов - в этом случае нажмитена веб-панели просмотра и вкладке компоновщика и перетащите параметр делегата в «Владелец файла».

и все.

0 голосов
/ 11 января 2012

Ваш класс должен реализовывать протокол UIWebViewDelegate. Тогда в методе webView:shouldStartLoadWithRequest:navigationType: вы можете сделать это:

[textField setText:[[request URL] absoluteString]];

Таким образом, значение в textField будет обновляться всякий раз, когда вы переходите на новый URL.

...