gpt4 book ai didi

iOS UIWebView 不接受 URL 更改

转载 作者:行者123 更新时间:2023-11-28 19:38:52 25 4
gpt4 key购买 nike

我的 UIWebView 有一个奇怪的问题,它不接受任何更改。

当我启动应用程序时,它完美地加载了 URL,委托(delegate)方法被触发,但 UIWebView 之后不接受任何操作,例如隐藏它或更改它的 URL。当我调用 [webView loadRequest:urlRequest]; 将当前 URL 更改为另一个 URL 时,委托(delegate)方法被触发但 WebView 继续查看旧页面,没有变化(仅指示器显示几秒钟并且然后 webViewDidStartLoadwebViewDidFinishLoadshouldStartLoadWithRequest 中的日志命令工作正常。

场景如下:

- (void)viewDidLoad
{
[super viewDidLoad];

NSLog(@"viewDidLoad");

NSString *urlString = @"http://old.example.com";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];

// For here, everything is fine, the WebView loads the OLD URL

webView.delegate = self;
webView.opaque = NO;
webView=[[UIWebView alloc]init];
[webView setBackgroundColor:[UIColor grayColor]];
[webView setDelegate:(id<UIWebViewDelegate>)self];
[self.view addSubview:webView];

activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.frame = CGRectMake(200.0, 200.0, 100.0, 40.0);
activityIndicator.center = self.view.center;
[self.view addSubview: activityIndicator];

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(loadNotificationUrl:)
name:@"loadNotificationUrl" object:nil];

}

-(void)loadNotificationUrl:(NSNotification*) notification
{
// Now the notification arrives holding the NEW URL
NSDictionary* userInfo = notification.userInfo;
NSString* NotificationUrl = (NSString*)userInfo[@"url"];
NSLog (@"Successfully received: %@", NotificationUrl); // it gets --> "http://new.example.com"

NSURL *url = [NSURL URLWithString:NotificationUrl];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSLog(@"Before Load: %@", [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"]); // --> this is showing "about:blank"!!

[webView loadRequest:urlRequest]; // This works but doesn't change anything in the WebView! OLD page still showing.


}

谁能告诉我我错过了什么?

最佳答案

初始请求加载到与 future 请求不同的 Web View 中。如果你查看你的代码,你有 [webView loadRequest:urlRequest];

然后几行之后你有 webView=[[UIWebView alloc]init];webView 变量设置为一个新的 UIWebView 实例,然后添加以你的观点。这个 web View 是不可见的,因为它的框架大概是 CGRectZero。委托(delegate)方法正在触发,因为您已将新实例的委托(delegate)设置为 self,但您还是看不到结果。

删除 webView=[[UIWebView alloc]init]; 假设你已经在别处初始化了 web View ,事情可能会如你所料。

关于iOS UIWebView 不接受 URL 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36188734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com