在我的应用程序中,我有一个UIWebview
加载linkedin auth页面登录.当用户登录时,cookie会保存到应用程序中.
我的应用程序有一个与linkedin登录无关的注销按钮.因此,当用户点击此按钮时,他会从应用程序中注销.我希望这个注销将从应用程序中清除他的linkedin cookie,以便用户完全注销.
我最近发现我的UIWebView在ITMS链接上窒息.具体而言,在我的应用程序中的UIWebView,如果我浏览到一个网站,如这一个,然后单击"可用在App Store上的"链接,将UIWebView的错误了"错误域= WebKitErrorDomain代码= 101的网址不能显示".
经过一段谷歌搜索,我意识到我需要捕获应用程序链接的请求并让iOS处理它们.我开始时查看该方案是否以"itms"开头-webView:shouldStartLoadWithRequest:navigationType:
,但意识到系统可以处理其他类型的应用程序链接.所以我想出了这个,相反:
- (void)webView:(UIWebView *)wv didFailLoadWithError:(NSError *)error {
// Give iOS a chance to open it.
NSURL *url = [NSURL URLWithString:[error.userInfo objectForKey:@"NSErrorFailingURLStringKey"]];
if ([error.domain isEqual:@"WebKitErrorDomain"]
&& error.code == 101
&& [[UIApplication sharedApplication]canOpenURL:url])
{
[[UIApplication sharedApplication]openURL:url];
return;
}
// Normal error handling…
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
-webView:shouldStartLoadWithRequest:navigationType:
,它不会发生,所以它有点烦人.如何你处理这些请求?
如何从NSURLRequest
Objective-C中检索所有HTTP头?
我想禁用应用程序中的长触摸.我无法控制我在WebView上加载的HTML.
我有使用a实现的基本Web浏览器UIWebView
.我注意到对于某些页面,没有一个UIWebViewDelegate
方法被调用.
发生这种情况的示例页面是:http://www.youtube.com/user/google.以下是重现问题的步骤(确保NSLog
在控制器的UIWebViewDelegate
方法中插入调用):
UIWebView
[注意这里,UIWebViewDelegate
在页面加载时调用方法]我知道这不是UIWebView
代理没有正确设置的问题,因为委托方法在加载其他链接时会被调用(例如,如果你尝试点击链接将你带到youtube之外,你会注意到代表被调用的方法).
我最初的直觉是它可能是因为页面是使用AJAX加载的,这可能不会调用委托方法.但是当我检查iPhone的Safari时,它没有出现这个问题,所以它一定是我身边的东西.
我也注意到Three20的TTWebController
问题与我的问题完全相同.
但是这个问题引起的问题是,如果没有调用委托方法,我将无法更新UI以在加载新请求时启用/禁用后退和前进浏览按钮.
并且想出为什么会发生这种情况或者如何在新请求发生时更新UI?
我正在尝试为UIWebView构建一个过滤器,我正在努力检测UIWebView何时完全加载.我使用了以下两种方法
– webView:shouldStartLoadWithRequest:navigationType:
– webViewDidFinishLoad:
Run Code Online (Sandbox Code Playgroud)
但问题是,当页面包含要加载的帧和其他内容时,这些将被多次调用.
我需要知道什么时候视图已经完全加载,并且没有更多的内容可以获取.然后,当内容加载后,我可以根据已批准的URL列表检查页面的URL.
有任何想法吗?
我的项目中有一个NSString
和一个webView(iPhone的Objective-C),我index.html
在webView中调用,在里面我插入了我的脚本(javascript).
如何在我的脚本中将NSString作为var传递,反之亦然?
这是一个例子,但我不太了解它.
如何设置为我的委托UIWebView
来使用webViewDidFinishLoad
?
我UIWebView
用来在我的应用程序中呈现Web内容.我观察到应用程序启动时的初始请求,即loadRequest
需要很长时间才能呈现内容.然而,我不跟踪的后续请求要快得多.
为了证实这一点,我创建了一个独立的应用程序,它只有一个UIWebView
.这是我添加的单行代码:
[wkBrowser loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.yahoo.com"]]];
Run Code Online (Sandbox Code Playgroud)
结果是一样的.加载页面大约需要15-20秒.但是,在点击网页上的任何链接时,加载下一页需要3-5秒.我确实把UIWebView委托函数didFailLoadWithError,但从来没有错误.
问题:
我用来UIWebView
从a加载web webLink
并UIWebViewDelegate
控制错误状态:
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:webLink]]];
- (void)webViewDidStartLoad:(UIWebView *)webView{
NSLog(@"START LOAD");
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"FINISH LOAD");
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"ERROR : %@",error);
}
Run Code Online (Sandbox Code Playgroud)
但是,当webLink
没有找到,它不会去didFailLoadWithError
,它去startLoad
和didFinishLoad
.如何webLink
找到未找到的情况?请帮忙!