在我的故事板中,我有一个UIWebView的视图,它填充整个区域,除了选项卡和导航栏.视图的控制器实现协议UIWebViewDelegate.控制器设置为UIWebView的委托:
#pragma mark - UIWebViewDelegate
- (void) webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"webViewDidStartLoad");
}
- (void) webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"webViewDidFinishLoad");
}
Run Code Online (Sandbox Code Playgroud)
当UIWebView正在加载时,我将显示一个带有图像的黑色背景,表明它正在加载.我怎样才能做到这一点?
EDIT1:
我正在尝试添加默认值ActivityIndicatorView而不是静态图像.但这只是给我一个黑色背景和一个小的白色区域.问题是什么?
UIImageView *loadingImageView = [[UIImageView alloc] initWithFrame:webView.frame];
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
UIImage *spacer = [UIImage imageNamed:@"spacer"];
UIGraphicsBeginImageContext(spinner.frame.size);
[spacer drawInRect:CGRectMake(0,0,spinner.frame.size.width,spinner.frame.size.height)];
UIImage* resizedSpacer = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
loadingImageView.image = resizedSpacer;
[loadingImageView setBackgroundColor:[UIColor blackColor]];
[loadingImageView setContentMode:UIViewContentModeCenter];
self.loadingImageView = loadingImageView;
Run Code Online (Sandbox Code Playgroud) 我可以通过以下方式拦截来自UIWebView的初始加载请求:
(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType.
Run Code Online (Sandbox Code Playgroud)
如何记录我正在加载的页面中的所有请求?
我创建了一个NSObject类并包含在init中创建一个uiwebview,将委托设置为self并发送加载请求.
由于某种原因,webViewDidFinishLoad或didFailLoadWithError永远不会被触发.我无法理解为什么.
//
// RXBTest.h
#import <Foundation/Foundation.h>
@interface RXBTest : NSObject <UIWebViewDelegate>
@end
Run Code Online (Sandbox Code Playgroud)
// RXBTest.m
// pageTest
#import "RXBTest.h"
@implementation RXBTest
- (id) init
{
if((self=[super init])){
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
[webView setDelegate:self];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
}
return self;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"ERROR LOADING WEBPAGE: %@", error);
}
- (void) webViewDidFinishLoad:(UIWebView*)webView
{
NSLog(@"finished");
}
@end
Run Code Online (Sandbox Code Playgroud)
有人有什么想法吗?
谢谢rudi
我已经在我的应用程序中实现了一个浏览器UIWebView,默认情况下我在浏览器中加载了谷歌页面.
当我在谷歌网页搜索某些内容时,UIWebViewDelegate的webView:shouldStartLoadWithRequest:navigationType:方法被调用.
问题是,当我点击此搜索页面上的后退按钮时,没有代表被调用,所以我在禁用后退按钮时出现问题.
此问题仅发生在不在iPhone应用程序中的iPad应用程序中.
我想在加载网页后做一些额外的工作,所以我在webViewDidFinished中添加了一些代码,但似乎在这种情况下它不起作用.
情况:我访问了一个带有UIWebview的网页,然后点击一个链接到另一个,之后,我运行
[webview goback];
Run Code Online (Sandbox Code Playgroud)
似乎页面仅从缓存加载
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
Run Code Online (Sandbox Code Playgroud)
叫做,
- (void)webViewDidFinishLoad:(UIWebView *)webView;
Run Code Online (Sandbox Code Playgroud)
不叫.
有没有办法从UIWebView中检测window.print并对其进行响应?我在我的UiWebView中打印,需要有办法从UIWebView对该事件做出反应.
我想拦截UIWebView中的单击,然后使用视频的URL.这怎么可能?我发现了一个有点类似的帖子,它指向了
webView:shouldStartLoadWithRequest:navigationType:
Run Code Online (Sandbox Code Playgroud)
代表.我似乎无法通过此委托获取视频的加载网址.
我试图让代码在iOS8中运行
有没有办法获得当前播放视频的链接.我正在加载m.youtube.com.对于一些视频,它甚至没有进入代表.我也尝试使用NStimer.但对于一些视频,它不是点击网址
所以,我有一个带有UIWebView的UIView,用于提供本地HTML文件(文档预览).我也有"接受"和"拒绝"UIButtons.我需要这些按钮仅在用户滚动到网页底部后才会出现.有没有办法捕获滚动到UIWebView底部的事件?
我没有看到任何好的答案,有人可以帮忙吗?
提前致谢.
我想尝试在ios应用程序中使用UIWebView登录网页.但是,我不知道怎么能这样做.我正在展示网站
let url = NSURL(string: "http://m.falalem.com")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
Run Code Online (Sandbox Code Playgroud)
我想使用我的用户名和密码参数登录此页面.登录页面 - > http://m.falalem.com/Login 登录页面后 - > http://m.falalem.com/User-Info
如何使用uiwebview登录此页面?请帮忙!