загрузка другой страницы с помощью webView: managePolicyForNavigationAction: запрос: frame: SolutionListener: метод - PullRequest
5 голосов
/ 29 ноября 2010

Hii All,

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



(void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id )listener
{
  [[myWebView mainFrame] loadRequest:someRequest];
}

но этот метод вызывается несколько раз, и мое приложение вылетает, если я использую [listener use] вместо loadRequest, он работает нормально, но запускает URL-адрес, по которому щелкнули. но я хочу загрузить другой URL-адрес, как это возможно?

Ответы [ 3 ]

2 голосов
/ 13 июля 2013

Вы должны просто добавить [listener ignore] вызов метода.

- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id )listener
{
    [listener ignore];
    [[myWebView mainFrame] loadRequest:someRequest];
}
1 голос
/ 01 сентября 2011

Ну, в этом методе обязательно возвращать значение.Вы должны решить, принимаете ли вы этот URL или нет.Поэтому, если WebView переходит на страницу, которая вам не нужна, вы должны вернуть значение ignore.

И сделать, чтобы WebView перешел на ваш другой URL: [myWebView setMainFrameURL:otherUrlStr]

Спасибо

1 голос
/ 15 августа 2011

Он вызывается несколько раз, как вы говорите, поэтому вы должны обратить на это внимание:
[actionInformation valueForKey: @"WebActionNavigationTypeKey"]

Это значение должно быть одним из WebNavigationType enum:
WebNavigationTypeLinkClicked,<br> WebNavigationTypeFormSubmitted,<br> WebNavigationTypeBackForward,<br> WebNavigationTypeReload,<br> WebNavigationTypeFormResubmitted,<br> WebNavigationTypeOther

Сначала вы получите WebNavigationTypeLinkClicked в результате нажатия на ссылку, и здесь вы можете решить, загружать ли страницу нажатием или что-то еще.
Сразу после того, как вы получите WebNavigationTypeOther, которая является страницейзагрузить, и вы можете игнорировать это.

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