gpt4 book ai didi

objective-c - UIWebView 不刷新

转载 作者:行者123 更新时间:2023-11-28 20:27:19 26 4
gpt4 key购买 nike

我希望我的应用程序中的 webview 在每次应用程序激活时刷新(通过主屏幕或双击主页按钮启动)。

我的 ViewController.m 看起来像这样:

- (void)viewDidLoad
{
NSURL *url = [NSURL URLWithString:@"http://cargo.bplaced.net/cargo/apptelefo/telefonecke.html"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[_webView loadRequest:req];

[super viewDidLoad];

}

- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[_webView reload];
}

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}

return YES;
}

这段代码有什么问题?提前致谢!

最佳答案

我认为 viewDidAppear: 不会在应用程序进入前台时触发;这些 viewWill* 和 viewDid* 方法用于 View 转换(模态、推送),与应用程序生命周期事件无关。

您要做的是专门注册前台事件,并在收到通知时刷新 webview。您将在 viewDidAppear: 方法中注册通知,并在 viewDidDisappear: 方法中取消注册它们。你这样做是为了你的 Controller ,如果它消失了,当它没有向用户显示任何内容时,不会继续重新加载 webview(或尝试重新加载僵尸实例并崩溃)。像下面这样的东西应该可以工作:

- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];

[_webView reload]; // still want this so the webview reloads on any navigation changes
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground) name:UIApplicationWillEnterForegroundNotification object:nil];
}

- (void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillEnterForegroundNotification object:nil];
}

- (void)willEnterForeground {
[_webView reload];
}

关于objective-c - UIWebView 不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551781/

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