如果有人能够回答那么简单的问题会非常棒。
我有一个简单的UIWebView用于登录某个服务。但是,当我重新加载应用程序时,它仍然保持登录状态。我需要做的是每次应用程序启动时都像新的一样创建UIWebView。我不确定界面构建器中是否存在某个选项,或者可能是某种方法,我可以放置在应用程序终止时调用的方法中,以便它释放WebView或其他东西。
答案 0 :(得分:4)
您需要做的是不保存UIwebView的缓存。您可以使用以下简单代码执行此操作:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
将代码放在UIwebview代码中。
或者在ApplicationDidFinishLoad(或类似的东西,哈哈)中你可以删除缓存:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
修改强>
你在评论中提出了一些问题。您可以执行以下代码:
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"]];
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.f, 0.f, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 20.f)];
[webView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];
//No Cache\\
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
//No Cache\\
webView.delegate = self;
[webView loadRequest:request];
[self.view addSubview:webView];
确定,
删除特定请求
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:NSURLRequest];
或者从UIWebView中删除al cookies
for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}
祝你好运,
森
答案 1 :(得分:1)
我的答案将分为多个部分,以涵盖多个基础。
1 - 应用程序可能为用户设置了cookie,因此即使启动新应用程序,旧cookie也会保留登录详细信息,因此您仍然会登录。
要杀死cookie,请在加载uiwebview之前尝试此操作(即在viewwillload或其他方法中)
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) {
[storage deleteCookie:cookie];
}
2 - 这是在多线程手机上(iOS4或更新的3GS或更新版本)?你确定该应用程序正在终止,而不是仅仅去后台吗?如果是这种情况,并且您刚刚启动了之前的应用程序(您仍然登录),则需要挂钩 - (void)applicationDidBecomeActive:(UIApplication *)应用程序并删除旧的Web视图并添加新的视图