Ограничить UIWebView определенными страницами

#objective-c #ios #xcode #ipad #uiwebview

#objective-c #iOS #xcode #iPad #uiwebview

Вопрос:

Я пытаюсь создать простое приложение для ipad с UIWebView, которое отображает форму, которую может заполнить клиент .. что я хочу сделать, так это ограничить приложение, чтобы оно позволяло пользователю перемещаться только по определенным адресам .. (т. Е. Либо что-то, что позволяет пользователю перейти по определенному адресу.. ИЛИ что-то, что проверяет наличие определенных ключевых слов и разрешает / блокирует их по мере необходимости ..)

Не мог бы кто-нибудь, пожалуйста, показать мне, как это делается..

ПРИМЕЧАНИЕ: это в основном форма googledocs, и я не хочу позволять пользователю перемещаться от нее .. (пользователь может легко щелкнуть и перейти в другое место)

Спасибо за чтение 🙂

Ответ №1:

В вашем классе UIWebViewDelegate вы можете использовать что-то вроде этого:

 -(BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = request.URL;
    NSString *urlString = url.absoluteString;

    //Check for your own url. You can use more advanced checking techniques of course :)
    NSRange range = [urlString rangeOfString:@"http://www.yourUrl.com"];
    if (range.location != NSNotFound) 
        return YES;
    else
        return NO;
}
  

Ответ №2:

Вы можете использовать метод делегирования

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

чтобы определить, может ли UIWebView загружать данную веб-страницу. Хотя это означало бы точное знание того, какие страницы разрешены (если их много, это может быть неудобно).

Комментарии:

1. я читал об этом .. не могли бы вы случайно показать мне, как его использовать .. или, может быть, если вы где-нибудь знаете учебник?

2. Вы устанавливаете некоторый класс в качестве делегата UIWebView и реализуете этот метод. Всякий раз, когда UIWebView хочет загрузить запрос, он вызывает этот метод для делегата. В этом методе вы просматриваете URL-адрес NSURLRequest (request), [URL-адрес запроса], и смотрите, хотите ли вы его авторизовать или нет, если вы возвращаете ДА, если нет, НЕТ.

Ответ №3:

Использовать UIWebViewDelegate метод webView:shouldStartLoadWithRequest:navigationType:

Затем проверьте, какой URL-адрес загружает UIWebView, и действуйте соответственно.

Ссылка на UIWebViewDelegate