#uiwebview #uiwebviewdelegate
#uiwebview #uiwebviewdelegate
Вопрос:
Мое приложение записывает небольшой HTML-файл во временный кеш пользователя. Этот файл указывает на наш логин на сервере и содержит имя пользователя и пароль, а также перенаправление на фактический URL-адрес, по которому я хочу, чтобы пользователь перешел.
Все работает нормально, но в рамках методов UIWebView мне нужно определить, на какой URL-адрес я в конечном итоге попаду, потому что я должен проанализировать этот URL-адрес, чтобы определить, показывать или скрывать навигацию.
Все работает, НО я не могу определить фактический URL-адрес, на котором заканчивается страница — я просто продолжаю получать путь к файлу.
Мой заголовок выглядит так:
#import <UIKit/UIKit.h>
@interface ViewControllerApprovals : UIViewController <UIWebViewDelegate> {
}
@property(nonatomic, retain) IBOutlet UIWebView *webView;
@property(nonatomic, retain) NSURLRequest *currentRequest;
@property(nonatomic, strong) NSString *requestType;
@property(nonatomic, strong) NSString *pathToFile;
@end
И мой файл реализации:
#import "ViewControllerApprovals.h"
#import "ContactsDatabase.h"
#import "UserDefaults.h"
#import "SettingsViewController.h"
@interface ViewControllerApprovals ()
@end
@implementation ViewControllerApprovals
- (id)initWithNibName:(NSString *)nibNameOrNil
bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
self.view.backgroundColor =
[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"sos.png"]];
if (self) {
}
return self;
}
- (void)viewDidAppear:(BOOL)animated {
}
- (void)viewDidLoad {
[self setEdgesForExtendedLayout:UIRectEdgeNone];
self.webView.delegate = self;
NSURL *targetURL = [NSURL fileURLWithPath:self.pathToFile];
NSURLRequest *tmpRequest = [NSURLRequest requestWithURL:targetURL];
[self.webView loadRequest:tmpRequest];
}
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
self.currentRequest = request;
[self hideNavigationBar:request];
return YES;
}
#pragma mark - Hide Navigation Bar
- (void)hideNavigationBar:(NSURLRequest *)pRequest {
NSString *currentURL = self.webView.request.URL.absoluteString;
NSURL *url = pRequest.URL;
NSString *urlString = [url absoluteString];
NSString *nsfURL = @"#approvalPage";
if ([urlString rangeOfString:nsfURL].location == NSNotFound) {
[self.navigationController setNavigationBarHidden:FALSE animated:YES];
} else {
[self.navigationController setNavigationBarHidden:TRUE animated:YES];
}
}
@end