Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS UIWebView不接受URL更改_Ios_Objective C_Uiwebview - Fatal编程技术网

iOS UIWebView不接受URL更改

iOS UIWebView不接受URL更改,ios,objective-c,uiwebview,Ios,Objective C,Uiwebview,我的UIWebView有一个奇怪的问题,它不接受任何更改 当我启动应用程序时,它会完美地加载URL,委托方法会按应该的方式启动,但UIWebView不会接受此后的任何操作,比如隐藏它或更改它的URL。当我调用[webView loadRequest:urlRequest]若要将当前URL更改为另一个URL,将触发委托方法,但WebView会继续查看旧页面,没有更改(仅指示器显示几秒钟,然后webviewdistartoad和webviewdisfinishload和shouldstartoadw

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

当我启动应用程序时,它会完美地加载URL,委托方法会按应该的方式启动,但UIWebView不会接受此后的任何操作,比如隐藏它或更改它的URL。当我调用
[webView loadRequest:urlRequest]
若要将当前URL更改为另一个URL,将触发委托方法,但WebView会继续查看旧页面,没有更改(仅指示器显示几秒钟,然后
webviewdistartoad
webviewdisfinishload
shouldstartoadwithrequest
中的日志命令工作正常)

下面是一个场景:

- (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.


}
-(void)viewDidLoad
{
[超级视图下载];
NSLog(@“viewDidLoad”);
NSString*urlString=@”http://old.example.com";
NSURL*url=[NSURL URLWithString:urlString];
NSURLRequest*urlRequest=[nsurlRequestRequestWithURL:url];
[webView loadRequest:urlRequest];
//在这里,一切正常,WebView加载旧URL
webView.delegate=self;
webView.不透明=否;
webView=[[UIWebView alloc]init];
[webView setBackgroundColor:[UIColor grayColor]];
[webView setDelegate:(id)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]添加观察者:self
选择器:@selector(loadNotificationUrl:)
名称:@“loadNotificationUrl”对象:nil];
}
-(void)loadNotificationUrl:(NSNotification*)通知
{
//现在,通知到达时包含新的URL
NSDictionary*userInfo=notification.userInfo;
NSString*通知url=(NSString*)用户信息[@“url”];
NSLog(@“成功接收:%@”,通知URL);//它获取-->“http://new.example.com"
NSURL*url=[NSURL URLWithString:NotificationUrl];
NSURLRequest*urlRequest=[nsurlRequestRequestWithURL:url];
NSLog(@“加载前:%@,[webView stringByEvaluatingJavaScriptFromString:@”window.location.href“]);//-->这显示的是“关于:空白”!!
[webView loadRequest:urlRequest];//这可以工作,但不会改变webView中的任何内容!仍显示旧页面。
}

有人能告诉我我遗漏了什么吗?

初始请求加载到与未来不同的web视图中。如果在代码中查找,则有
[webView loadRequest:urlRequest]

接下来的几行是
webView=[[UIWebView alloc]init]
webView
变量设置为新的UIWebView实例,然后将其添加到视图中。但此web视图不可见,因为它的框架可能是
CGRectZero
。委托方法正在激发,因为您已将新实例的委托设置为self,但再次无法看到结果


删除
webView=[[UIWebView alloc]init]和事情可能会按照您的预期运行。

初始请求将加载到与将来不同的web视图中。如果在代码中查找,则有
[webView loadRequest:urlRequest]

接下来的几行是
webView=[[UIWebView alloc]init]
webView
变量设置为新的UIWebView实例,然后将其添加到视图中。但此web视图不可见,因为它的框架可能是
CGRectZero
。委托方法正在激发,因为您已将新实例的委托设置为self,但再次无法看到结果

删除
webView=[[UIWebView alloc]init],假设您已在其他位置初始化了web视图,则事情可能会按照您的预期运行。

在loadRequest:urlRequest之后,您已创建一个新的UIWebView,它将覆盖旧的webView,请将其删除。

在loadRequest:urlRequest之后,您已创建一个新的UIWebView,它将覆盖旧的webView,请将其移除。

移动此行:

webView=[[UIWebView alloc]init];
[webView loadRequest:urlRequest];
在这一行之前:

webView=[[UIWebView alloc]init];
[webView loadRequest:urlRequest];
在这种方法中:

viewDidLoad
移动此行:

webView=[[UIWebView alloc]init];
[webView loadRequest:urlRequest];
在这一行之前:

webView=[[UIWebView alloc]init];
[webView loadRequest:urlRequest];
在这种方法中:

viewDidLoad

删除webView=[UIWebView alloc]init];应该可以工作

删除webView=[UIWebView alloc]init];该工作了

谢谢你,你让我很开心!这是干什么的<代码>网络视图=[[UIWebView alloc]init]网络视图=[[UIWebView alloc]init]