У меня было требование: мне нужно создать представление для отображения веб-страниц с помощью кнопки «назад», «вперед» и «Обновить» в приложении iOS. как реализовать эту функциональность?создать реализацию браузера InApp в приложении iOS
ответ
Использование UIWebView
. Установите делегата в контроллер вида.
self.webView.delegate = self;
Другие замечательные свойства,
self.webView.scalesPageToFit = YES;
Чтобы загрузить URLRequest,
[self.webView loadRequest:theRequest];
или только строки, используйте
[self.webView loadHTMLString:htmlString baseURL:nil];
и некоторые делегаты здесь. веб-представление имеет свою собственную историю, вы можете использовать его, вызывая его обратно и вперед методы.
#pragma mark - UIWebView delegate
// You can handle your own url scheme or let the web view handle it.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"url=%@, %@, %@",
request.URL, request.URL.query, request.URL.host);
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
if ([request.URL.scheme compare:@"customescheme"] == NSOrderedSame) {
if ([request.URL.host compare:kSomethingDotCom] == NSOrderedSame) {
[self mymethod];
} else if ([request.URL.host compare:kAnotherDotCom] == NSOrderedSame) {
[self method2];
} else {
NSLog(@"Unsupported service.");
}
return NO;
}
}
return YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[_activityIndicator stopAnimating];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
[_activityIndicator stopAnimating];
[Resources showAlert:@"Could not load." withTitle:@"Error!"];
NSLog(@"%@", [error localizedDescription]);
}
#pragma mark - Actions
- (IBAction)didPressBackButton:(id)sender
{
[_webView goBack];
}
- (IBAction)didPressForwardButton:(id)sender
{
[_webView goForward];
}
Аналогичным образом вы можете использовать метод остановки. Чтобы обновить, перезагрузите запрос еще раз. Перед возвратом или пересылкой вы можете проверить методы canGoBack или canGoForward. См. Документы в, http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html
Отличный ответ, я реализовал первые 2 метода из UIWebViewDelegate, но ничего не происходит, эти методы не вызываются (у меня есть гиперссылка в index.html) , ты знаешь почему? – sAguinaga
Вы установили делегат, self.webView.delegate = self; или что-то вроде этого ... – karim
Вот и все. Он работает сейчас! – sAguinaga
Это кусок торта, все что вам нужно - это компонент UIWebview и его делегаты, и вам нужно создать настраиваемую панель навигации, которая есть.
Вы можете использовать Kendo UI mobile - структуру Javascript и HTML5, которая позволяет создавать собственные приложения для нескольких мобильных платформ, включая iOS. ссылка: http://www.kendoui.com/mobile.aspx – azimov