URL в UITextField - PullRequest
       20

URL в UITextField

1 голос
/ 28 февраля 2011

У меня есть UIWebView и UITextField на мой взгляд, но я столкнулся с проблемой.

Проблема в том, как автоматически заменить URL-адрес веб-страницы в UITextField при просмотре различных веб-страниц?

Ответы [ 4 ]

3 голосов
/ 28 февраля 2011

Используйте следующее свойство экземпляра UIWebView :

@property(nonatomic, readonly, retain) NSURLRequest *request

Таким образом, вы можете получить текущий NSURLRequest , связанный с веб-представлением:

NSURLRequest* urlRequest = myWebView.request;

Затем вы можете получить связанный экземпляр NSURL , используя следующий метод экземпляра:

- (NSURL *)URL

Таким образом, теперь вы можете получить объект NSURL сформируйте UIWebView со следующим кодом:

NSURL* url = [myWebView.request URL];

Чтобы преобразовать это в строку, вы можете использовать либо absoluteString, либо relativeString методы экземпляра NSURL .Для этого примера я буду использовать absoluteString.

NSString* urlString = [[myWebView.request URL] absoluteString];

Теперь мы можем установить текст UITextField , используя простое текстовое свойство:

myTextField.text = [[myWebView.request URL] absoluteString];

Тактеперь все, что нам нужно сделать, это убедиться, что предыдущая строка кода вызывается в правильное время, чтобы обновлять текстовое поле текстом URL при каждом изменении страницы.Для этого нам нужно использовать класс, который является делегатом UIWebView (и, следовательно, соответствует протоколу UIWebViewDelegate ).Если вы не уверены в том, как использовать делегатов, я настоятельно рекомендую вам ознакомиться с шаблонами проектирования делегатов и документацией Apple Developer, так как они используются при разработке iOS.

В вашем классе UIWebViewDelegate Вам необходимо реализовать следующий метод следующим образом:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    myTextField.text = [[myWebView.request URL] absoluteString];
}

Это обеспечит постоянное отображение в текстовом поле URL-адреса страницы, которая начала загружаться последней (существуют другие методы UIWebViewDelegate если вы хотите, чтобы текстовое поле обновлялось в другое время).

Надеюсь, это поможет.

0 голосов
/ 28 февраля 2011

Вы должны определить - webViewDidStartLoad: метод делегата идентификатора вашего UIWebView:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
      yourUITextField.text = [[webView.request URL] path];
}

Все из документации

0 голосов
/ 28 февраля 2011

В делегате веб-просмотра есть метод - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType.

Этот метод будет вызывать каждую загрузку запроса в веб-представлении.

В этом вы можете получить объект запроса.Отсюда вы можете получить URL.

Вы можете напрямую вставить URL в текстовое поле в этом методе.

С уважением,

Сатья

0 голосов
/ 28 февраля 2011

В .H файле вы объявляете webview, текстовое поле и IbAction для просмотра вводимого текста, и это выглядит как

  {
    IBOutlet UIWebView *web;

IBOutlet UITextField *text;
  }
 -(IBAction)search:(id)sender;

и .M файл выглядит в IBaction

 -(IBAction)search:(id)sender{
NSLog(@"%@",text.text);

NSString *urlAddress = [NSString stringWithFormat:@"http://%@",text.text];

NSURL *url = [NSURL URLWithString:urlAddress];

NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

[web loadRequest:requestObj];
   }

конечно, это работает

...