Я хочу использовать UIWebView
, чтобы сделать некоторые манипуляции с веб-страницей. Я добавил весь необходимый код UIWebView
в класс NSObject
, но методы делегатов UIWebView
никогда не вызываются и, похоже, ничего не делают.UIWebView работает только при добавлении к виду
Если я передам тот же код классу UIViewController
и добавлю UIWebView
к виду, он отлично работает.
Так ли UIWebView даже работает, если он не добавлен в представление? Как добавить это с нулевым фреймом или скрытым от класса NSObject
?
Я действительно сбил свой код (ниже), который должен работать так, как есть, но нет.
MyWebViewHelper.m
@interface MyWebViewHelper() <UIWebViewDelegate>
@property (strong) UIWebView *webview;
@end
- (instancetype)initWithURLString:(NSString *)urlString username:(NSString *)username password:(NSString *)password
{
if ((self = [super init])) {
}
return self;
}
- (void)readPage
{
NSLog(@"%s", __PRETTY_FUNCTION__);
self.webview=[[UIWebView alloc] init];
NSURL *url = [NSURL URLWithString:@"https://www.google.com"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
_webview.delegate = self;
[_webview loadRequest:requestObj];
}
#pragma mark - UIWebView Delegates
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"Should start loading: %@", [[request URL] absoluteString]);
NSLog(@"Headers: %@",[request allHTTPHeaderFields]);
NSLog(@"Data: %@", [[NSString alloc] initWithData:request.HTTPBody encoding:NSASCIIStringEncoding]);
NSLog(@"Method: %@",[request HTTPMethod]);
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"%s", __PRETTY_FUNCTION__);
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"%s", __PRETTY_FUNCTION__);
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"%s", __PRETTY_FUNCTION__);
NSLog(@"error:%@", error);
}
Как вы делали это раньше, - не добавляя его в UIViewController? Как и любой UIView, его нужно добавить в VC, чтобы его можно было увидеть. – brandonscript
Мне не нужно его видеть. Мне просто нужно использовать UIWebView для запуска некоторого javascript на странице. Но, похоже, он не загружает страницу, если она не добавлена в представление. – Darren
AH, нет, это не работает. Вы пробовали 'stringByEvaluatingJavaScriptFromString'? – brandonscript