使用UIWebView的方式无法执行代理方法,为什么无法执行呢?我也不知道,项目太赶,没有时间去研究,但是后来使用代码的方式解决了。
1.新建一个UIViewController subclass
2.h
UIViewController<UIWebViewDelegate>
{
UIActivityIndicatorView *activityIndicator;
UIWebView *webViewForCUD;
}
@property (nonatomic, retain) IBOutlet UIWebView *webViewForCUD;
3.m
-(void)loadView
{
[super loadView];
self.navigationItem.title = NSLocalizedString(@"常用资料", nil);
webViewForCUD = [[ UIWebView alloc] initWithFrame: CGRectMake(0,0,320,372 )];
[ webViewForCUD setUserInteractionEnabled: YES ]; //是否支持交互
[ webViewForCUD setDelegate: self ]; //委托
//[ webViewForCUD setOpaque: NO ]; //透明,背景变成灰色的
[ self . view addSubview : webViewForCUD]; //加载到自己的view
NSURL *url;
url = [[ NSURL alloc] initWithString:@"http://58.23.127.103:8080/fxt/water.do?method=list"];
[ webViewForCUD loadRequest:[ NSURLRequest requestWithURL: url ]]; //笔者习惯采用loadRequest方式,你可以采用其他方式
activityIndicator = [[ UIActivityIndicatorView alloc] initWithFrame: CGRectMake( 10 , 10 , 20 , 20 )];//需要在.h文件中进行声明
[ activityIndicator setCenter : webViewForCUD. center ];//位置
[ activityIndicator setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleGray]; //颜色根据不同的界面自己调整
[ self . view addSubview : activityIndicator];
}
- (void )webViewDidFinishLoad:(UIWebView *)webView
{
[activityIndicator stopAnimating];
NSLog(@"webViewDidFinishLoad ok??");
}
- (void )webViewDidStartLoad:(UIWebView *)webView
{
[ activityIndicator startAnimating ];
NSLog(@"webViewDidStartLoad ok??");
}
分享到:
相关推荐
然后调用`window.location.href`或`window.webkit.messageHandlers`来触发UIWebView的代理方法,如`- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:...
此外,`UIWebView`支持JavaScript与Objective-C之间的交互,通过实现`UIWebViewDelegate`的`webView:shouldStartLoadWithRequest:navigationType:`方法,可以拦截页面加载请求并进行处理,甚至执行自定义的行为。...
4. **JavaScript交互**:UIWebView支持与JavaScript的交互,你可以通过`stringByEvaluatingJavaScriptFromString:`方法执行JavaScript代码并获取结果。这在你需要获取网页数据或操作DOM时非常有用。 5. **处理错误*...
4. **UIWebView的代理方法**:为了获取UIWebView的加载状态和错误信息,我们需要遵循`UIWebViewDelegate`协议,并实现相关方法。比如`- (void)webViewDidStartLoad:(UIWebView *)webView`在网页开始加载时调用,`- ...
UIWebView有一些代理方法可以监听加载状态,如`webViewDidStartLoad:`(开始加载)、`webViewDidFinishLoad:`(加载完成)和`webView:didFailLoadWithError:`(加载失败)。你可以通过设置`UIWebViewDelegate`来...
5. **JavaScript交互**:UIWebView支持与JavaScript的交互,你可以通过`stringByEvaluatingJavaScriptFromString:`方法执行JavaScript代码,并获取返回结果。这对于获取网页上的数据或改变网页状态非常有用。 6. **...
UIWebView的使用主要包括初始化、加载网页内容以及设置代理。首先,我们需要创建一个UIWebView实例,然后通过`loadRequest:`方法加载URL请求或`loadHTMLString:baseURL:`方法加载HTML字符串。设置`UIWebViewDelegate...
当JavaScript执行`window.location.href`或`location.replace()`改变URL时,这个代理方法会被调用。 2. JavaScript桥接:为了让JavaScript能调用原生方法,通常会定义一个特殊的URL schema,如`myapp://doSomething...
此外,UIWebView还可以执行JavaScript代码,并获取其结果,这通过`stringByEvaluatingJavaScriptFromString:`方法实现。例如,我们可以在网页加载完成后获取页面的标题: ```swift webView....
方法,通过调用参数request对象的URL属性来获取关于本次请求的地址以及参数信息,因此可以通过js代码模拟一次特殊的网络请求来达到调用该代理方法的作用,并通过过滤“特殊的url”来达到有目的性的js代码调用native...
UIWebView提供了`loadRequest:`方法来加载URL请求,`stringByEvaluatingJavaScriptFromString:`方法来执行JavaScript代码并获取返回值。此外,还可以通过代理方法如`webViewDidFinishLoad:`来监听网页加载完成的状态...
3. 监听加载状态:可以设置UIWebView的代理(遵循`UIWebViewDelegate`协议),监听加载过程中的各种状态,如开始加载、完成加载、加载失败等。 ```swift webView.delegate = self // 遵循UIWebViewDelegate协议 ...
可以通过实现UIWebView的代理方法`webView:didReceiveAuthenticationChallenge:completionHandler:`和`webViewDidFinishLoad:`来监听加载进度。`webViewDidFinishLoad:`会在HTML页面完全加载后调用,可以用来处理...
3. **JS向OC传递数据**:要让JavaScript的数据传递到Objective-C,可以利用`UIWebView`的代理方法`- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:...
首先,在OC中设置UIWebView的代理并实现该方法: ```objc self.webView.delegate = self; - (void)webView:(WKWebView *)webView didReceiveScriptMessage:(WKScriptMessage *)message { if ([message.name ...
UIWebView提供了`stringByEvaluatingJavaScript(from:)`方法来执行JavaScript代码,并获取返回值。例如,要获取页面上的某个元素的文本,可以这样写: ```swift webView.stringByEvaluatingJavaScript(from: ...
2. **等待网页加载完成**:在UIWebView的代理方法`webViewDidFinishLoad:`中,你可以确认网页已经加载完成。这是执行JavaScript获取图片的好时机。 ```objc - (void)webViewDidFinishLoad:(UIWebView *)webView { ...
2. UIWebViewDelegate:设置UIWebView的代理,可以监听到JavaScript的某些事件,比如`shouldStartLoadWithRequest`方法,可以捕获到JavaScript发起的URL请求。 三、JavaScript与Objective-C/Cocoa Touch交互 1. ...
- **UIWebView代理**:实现UIWebViewDelegate协议,处理网页加载状态,如`webViewDidFinishLoad:`和`webView:didFailLoadWithError:`方法。 - **与JavaScript交互**:通过`stringByEvaluatingJavaScriptFromString...
UIWebView提供了多种代理方法,允许开发者处理加载状态的改变。例如,`webViewDidFinishLoad:`代理方法会在网页加载完成时被调用,可以在此时执行一些后期处理,如设置网页标题。 ```swift extension ...