UIWebView用法的一些总结

导语


由于我们在项目中经常要与h5交互,最好可以对UIWebView有更多的了解。

加载方法

加载NSURL:
- (void)loadRequest:(NSURLRequest *)request;
加载HTML字符串
- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
加载NSData
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;
如果HTML存在本地文件中,则可以用file://url 调用loadRequest方法加载

移除滚动后�的外边阴影

UIWebView包含一个scrollView组件,用来将关联web内容实现滚动效果,页面滚动后的UIWebView的面板周围会出现阴影效果,该效果是在四周添加UIImageView实现的,因此移除这种阴影效果的代码如下:

     UIScrollView *scrollView = webView.scrollView;                         
     for (int i = 0; i < scrollView.subviews.count ; i++) {              
        UIView *view = [scrollView.subviews objectAtIndex:i];
        if ([view isKindOfClass:[UIImageView class]]) {
            view.hidden = YES ;
        }
     }

UIWebViewDelegate 关键的两个:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
- (void)webViewDidFinishLoad:(UIWebView *)webView;

调用javascript代码,由UIWebView提供

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

参数script中传入要执行的js代码字符串,结果以字符串形式返回。代码如下

取web页面的标题

NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];

长按web页面中的各种效果

  • 默认情况下,长按web页中的链接,系统会自动呼出菜单提供open,copy和cancel选项
    1.取消这种效果,在代理方法webViewDidFinisheLoad中使用:
    [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
    2.点链接从saifir加载
    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    它的返回值用以控制是否允许加载目标链接页面的内容,UIWebViewNavigationType枚举定义了页面中用户行为的分类
  • UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
  • UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
  • UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
  • UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
  • UIWebViewNavigationTypeFormResubmitted,用户重复提交表单
  • UIWebViewNavigationTypeOther,发生其它行为。
    因此在方法中,代码如下:
   if ( navigationType == UIWebViewNavigationTypeLinkClicked ) {
      [[UIApplication sharedApplication] openURL:[request URL]];
      return NO;
    }
  • 默认情况下在页面元素中进行长按操作,会弹出菜单,来允许进行选择行为。禁用此行为代码在代理方法webViewDidFinisheLoad中使用:
    [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];

一些常用属性

  • scalesPageToFit属性. 设为YES UIWebView可以缩放HTML页面来适配其视口大小,从而达到整屏显示内容的效果,并且用户可以用捏合动作来放大或缩小页面来查看内容。设为NO的话可以禁用缩放
  • detectsPhoneNumbers。默认是YES 自动检测网页上的电话号码,单击可以拨打
  • 为webView添加背景图片:backgroundColor = [UIColor clearColor] opaque = NO 设为透明的,然后再在webView下添加一个UIImageView展示即可。

- 常调用的JS 但都需要在网页内容加载完成后才可以

//获取web页面内容信息,此处获取的是个json字符串
NSString *docStr=[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];
//取消长按webView上的链接弹出actionSheet的问题:
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout = 'none';"];
// 获取UIWebView的合适高度,
[webview stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"];
// 取消页面元素中进行长按操作
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];

你可能感兴趣的:(UIWebView用法的一些总结)