关于UIWebView的一些应用,包括与JS交互,前进,后退等
来源:互联网 发布:mac上用什么输入法 编辑:程序博客网 时间:2024/05/16 02:12
一 objc与javaScript交互
1).传统的与JS交互的方式有导入PhoneGap,但这里讨论的是通过拦截URL的方式来交互。
objc向JS传参的方式比较简单:
NSString *jsCode = [NSStringstringWithFormat:@"%@(%@)",callbackMethod,paramString];
[webview stringByEvaluatingJavaScriptFromString:jsCode];
其中callbackMethod是JS端方法名,paramString是要传的参数名。
2).JS调用objc的方式采用拦截URL;比如在点击webview上按钮时,调用 iOS buttonClick方法。
如下方法的作用是当点击按钮时,JS返回一个“#ios|buttoncolick|param|”(格式根据自己需要自定义)的RURL,shouldStartLoadWithRequest捕捉到并做相应的处理,并返回NO,否则返回YES进行web view页面加载。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *requestString = [[request URL] absoluteString];
NSInteger Meathodindex = [requestString rangeOfString:@"#ios"].location;
NSArray *compents = [requestString componentsSeparatedByString:@"#ios:"];
if (Meathodindex != NSNotFound)
{
//poctol是方法名和参数以及方法ID的集合,用|分割
NSString *poctol = [((NSString*)[compentsobjectAtIndex:1])stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSArray *detailMethod = [poctol componentsSeparatedByString:@"|"];
//方法名
self.callbackMethod = [detailMethodobjectAtIndex:detailMethod.count-2];
NSString *selecorName = [detailMethod objectAtIndex:0];
if([selecorName isEqualToString:@"buttonClick"])
{
[selfshowHudView];
}
return NO;
}
returnYES;
}
二 webview的goback和goForward的使用
很简单,废话不多说
-(void)webViewDidStartLoad:(UIWebView *)webView
{
[selfchangeBtnState];
}- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self changeBtnState];
- (void)changeBtnState
{
NSLog(@"xxxx:%d",[self.webcanGoBack]);
self.btnBack.enabled = [self.webcanGoBack];
self.btnForward.enabled = [self.webcanGoForward];
}
这个有一个问题就是第一次加载页面跳到第二个页面的时候不能goback,cangoback返回的结果一直是NO,后在satckOverflower上看到帖子说是IOS7.1的BUG,在6.0上运行良好,试了下果然如此http://stackoverflow.com/questions/18948373/why-is-uiwebview-cangoback-no-in-ios7
- 关于UIWebView的一些应用,包括与JS交互,前进,后退等
- 解决UIWebView 前进、后退刷新的坑
- UIWebView的前进和后退功能
- JS与UIWebView的交互
- UIWebView与JS的交互
- UIWebView与JS的交互
- UIWebView与JS的交互
- UIWebView与JS的交互
- UIWebView 前进 后退 刷新 取消
- UIWebView 前进 后退 刷新 取消
- uiwebview与js交互
- UIWebView与js交互
- uiwebview与js交互
- uiwebview与js交互
- UIWebView与JS交互
- uiwebview与js交互
- uiwebview与js交互
- UIWebView与JS交互
- Android中的系统广播集合
- TQFP 和LQFP 器件的焊接方法
- uva 10167 - Birthday Cake
- web maven jetty Unable to find a javac compiler
- Ubuntu “无法获得锁”解决方案(E: 无法获得锁 /var/cache/apt/archives/lock – open (11 资源临时不可用)
- 关于UIWebView的一些应用,包括与JS交互,前进,后退等
- 极限编程的集成测试工具-Dunit
- Count The Carries
- DevExpress 行事历(Scheduler)的常用属性、事件和方法
- FFMpeg分析1:URLProtocol,URLContext和ByteIOContext
- Android应用插件化开发
- Linux中文显示乱码设置
- 导出Excel工具类
- iOS 开发者必知的 75 个工具(译文)