Получить URL-адрес из UIWebView после перенаправления

#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