UIWebView小结--<1>

本文介绍如何优化iOS中的UIWebView,包括去除滚动阴影、调整UIWebViewDelegate方法、执行JavaScript代码、禁用长按效果等,同时提供了实用代码示例。
1、移除滚动的外边阴影

原理: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 ;
    }
}

2、UIWebViewDelegate 关键的两个:

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

3、调用javascript代码,由UIWebView提供

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

4、取web页面的标题

  • NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
5、长按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';"];
6、一些常用属性
  • scalesPageToFit属性. 设为YES UIWebView可以缩放HTML页面来适配其视口大小,从而达到整屏显示内容的效果,并且用户可以用捏合动作来放大或缩小页面来查看内容。设为NO的话可以禁用缩放
  • detectsPhoneNumbers。默认是YES 自动检测网页上的电话号码,单击可以拨打
  • 为webView添加背景图片:backgroundColor = [UIColor clearColor] opaque = NO 设为透明的,然后再在webView下添加一个UIImageView展示即可。
7、常调用的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';"];



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值