iOS中UIWebView的科学使用方法总结

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

众所周知,没有哪一个工具能像html/css那样如此轻易的构建复杂的界面,为了保证良好的用户体验,有时我们可能会选择使用html的方式来展示复杂度高,复用性低的界面,在iOS平台,选择UIWebView是非常自然的,那么我根据最近的一个iPad上的珠宝导购项目来向大家总结一下iOS平台结合HTML5使用UIWebView的小Tips。

1、加载本地html代码

这段代码加载了项目资源路径下www目录里面的index.html文件

	NSString *path = [[NSBundle mainBundle]pathForResource:@"index" ofType:@"html" inDirectory:@"www"];
        NSURL *url = [NSURL fileURLWithPath:path];
        NSURLRequest *req = [NSURLRequest requestWithURL:url];
        [_webView loadRequest:req];


2、加载网络html代码

        NSString *fullURL = @"http://ruby-china.org/";
        NSURL *url = [NSURL URLWithString:fullURL];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
        [_webView loadRequest:requestObj];

3、原生代码运行页面里面的js代码

[self.webView stringByEvaluatingJavaScriptFromString:@"alert("Calling from native code");"];

4、响应式布局

对于针对html5平台的html页面,一般都会在head里面添加这样的代码,它能自适应不同尺寸和分辨率密度的屏幕

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

5、针对触摸屏优化

这是一段非常神奇的js代码,能够让你的页面中所有<a>标签的跳转,在触摸屏上面的响应速度有一个质的飞跃!对于用户体验的提升,能使得html页面最大化的近似原生应用。


{
    var touching_flag = false;

    $(document).on('touchstart', "a:not(.notouch):not([href='#'])", function () {
        if (!touching_flag) {
            touching_flag = true;
        }
        window.setTimeout(function () {
            touching_flag = false;
        }, 0);
        return false;
    });

    $(document).on('touchend', "a:not(.notouch):not([href='#'])", function () {
    	window.location.href = $(this).attr('href');
        touching_flag = false;
    });

}


6、通过js调用原生代码

首先,在初始化webview的时候,在你的ViewController里面令

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.webView.delegate = self;
}

把webview的delegate指向当前类(类似Java里面的接口实现),然后在ViewController里面实现这个方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    
    NSString *jsMethodString = [[request URL] absoluteString];
    NSLog(@"jsMethodString ===> %@", jsMethodString);
}

接下来,你就能在html里面通过调用js来触发上面那个方法了:


function myAlert(msg) {
    alert(msg);
    window.location = 'ios:' + msg;
}



如果你在js里面调用myAlert("This is a message from js!");接下来你应该可以在Xcode的console里面看见这样的console输出:


jsMethodString ===> ios:This is a message from js!


7、对于提升用户体验非常有用的十个代码片段

http://www.jquery4u.com/plugins/10-jquery-ipad-code-snippets-plugins/


Camera AF和FF Camera按对焦功能可以分为FF(Fixed Focus)和AF(Auto Focus),即固定对焦和自动对焦。固定对焦顾名思义就是焦距是固定的,而自动对焦可以通过移动镜头位置来改变焦距从而实现自动对焦。以前摄像的功能机大多是固定对焦,现在的手机都带有自动对焦功能。 FF模组包括镜头(Lens),传感器(Sensor),红外滤色器(IR Filter),电路板(PCB),镜头支撑(Lens Holder),连接器(Connector)。 Fig 1. FF Module AF模组包括FF模组,音圈马达(V 阅读详情

相关推荐

【FPGA】Robei EDA的使用(10)————如何更新EDA的使用license

#海卑而下,能聚众水;学问笃实,以生光辉。 有的时候,有些问题自己通过查找资料解决,宁愿磨难一下,走点弯路,但收获更深刻的认知;不过,有些问题,问一下别人,可能会避免自己耗费过多时间做无用工,这些问题问会的人是极好的。但是怎样把握这个问题的类型,大约只能靠经验了~ (问我为何出此感言,谁叫我纠结了两天的问题,被人家一句话解决,我这个恨啊) ————————————————————正文开始的分割线———————————————— Robei EDA在使用上会有一个注册码,这个license在获取之后,每一次的

Ninquelote的博客 985

ios自带连点器一秒10000下_这6个iOS隐藏技巧让你的iPhone更高效 超级实用

无论你是不是果粉,都无法否认iOS系统优秀的性能,不过很多人吐槽iOS系统的封闭性,不如开源的安卓系统那样易用。其实只要掌握了一些iOS的隐藏技巧,你会发现手中的iPhone比想象中更高效,一起来学习一下!1.原生键盘输入颜文字输入纯文字不过瘾?颜文字不仅俏皮可爱,还能够缓解气氛,让文字交流显得没那么生硬,那么如何用原生键盘输入颜文字呢?很简单,在iPhone原生键盘中依次点击“123”—“#+-...

weixin_32240065的博客 4万+

dell r630 配置raid_DELL服务器RAID配置图文教程

名称解释:Disk Group:磁盘组,这里相当于是阵列,例如配置了一个RAID5,就是一个磁盘组VD(Virtual Disk): 虚拟磁盘,虚拟磁盘可以不使用阵列的全部容量,也就是说一个磁盘组可以分为多个VDPD(Physical Disk): 物理磁盘HS:Hot Spare 热备Mgmt:管理【一】创建逻辑磁盘1、按照屏幕下方的虚拟磁盘管理器提示,在VD Mgmt菜单(可以通过CTRL+P...

weixin_33253741的博客 3486

iOS中UIScrollView、UIWebView、UICollectionView实现图文混排

问题汇总1、如何实现JavaScript与Objective-C间传值?点击Webview中的图片,放大,需要JavaScript和Objective-C传值,获取到具体需要放大哪张图片。本方案中,不需要引入WebViewJavascriptBridge,而是通过【控制Webview重定向方法,拦截发出的请求】来实现。示例:123456789101112131415// 每个添加点击事件(wind...

iOS学习的博客 590

iOS中UIScrollView、UIWebView、UICollectionView实现商品详情页图文混排

  实现思路 将文本和图片拼接为HTML代码。 使用JavaScript添加点击事件。 使用MagicWebViewWebP提供UIWebView加载webp格式图片支持。 使用UIWebView加载HTML代码。 使用UIWebView代理方法,拦截页面发出的请求,获取selectIndex。 实现效果 组件 描述 说明 UI...

Keep_Moving31038的博客 1117

iOS-UIScrollView、UIWebView、UICollectionView实现商品详情页图文混排

实现思路 将文本和图片拼接为HTML代码。 使用JavaScript添加点击事件。 使用MagicWebViewWebP提供UIWebView加载webp格式图片支持。 使用UIWebView加载HTML代码。 使用UIWebView代理方法,拦截页面发出的请求,获取selectIndex。 实现效果 组件 描述 说明 UI...

MinggeQingchun的博客 731

UIWebView详解

UIWebView的三种加载方式和其代理 API 提供了三种方法: - (void)loadRequest:(NSURLRequest *)request; //加载HTML链接地址 - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL; //加载HTML代码 - (void)loadData:(NSData

Sands Lee的博客 442

iOS系列】-UIWebView加载网页禁止左右滑动

iOS系列】-UIWebView加载网页禁止左右滑动 问题: 做项目时候,用UIWebView加载网页的时候,要求是和微信网页中打开的网页的效果一样,也即是只能上下滑动,不能左右滑动,也不能缩放. 根据要求把webview.scalesPageToFit = NO;这样就不能对网页进行缩放了, 但是仔细的看加载的网页,还是能看清,左右有能够轻微的滑动,效果如下: 分析: 网上搜索发现...

weixin_30698297的博客 538

ios图文详情加载html_iOS中UIScrollView、UIWebView、UICollectionView实现商品详情页图文混排...

图文混排实现思路将文本和图片拼接为HTML代码。使用JavaScript添加点击事件。使用MagicWebViewWebP提供UIWebView加载webp格式图片支持。使用UIWebView加载HTML代码。使用UIWebView代理方法,拦截页面发出的请求,获取selectIndex。实现效果组件描述说明UIScrollView根容器高度自适应(KVO处理UIWebView + UIColle...

weixin_36295555的博客 414

iOS开发进阶》观后-下篇(注意问题篇)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34128501的博客 140

Xinference 内置 Rerank 模型 R3-rerank-0.6b:启动、调用与源码级原理指南

R3-rerank-0.6b 是腾讯开源的轻量级重排序(rerank)模型,已内置在 Xinference 的内置模型目录中,支持中英文双语。本文以 [r3-rerank-0.6b.rst](https://link.gitcode.com/i/4eec888d5834fc27645a6145a29198a0) 为核心,结合仓库源码与配置,完整讲解如何在 Xinference 中一键启动该模型、通

gitblog_00855的博客 779

iOS动态调试技巧:iOS-Debug-Hacks教你如何跟踪和修改程序行为

iOS-Debug-Hacks是一套专注于iOS项目开发过程中高级调试技巧的开源方案,涵盖三方库动态调试、静态分析和反编译等核心领域。本文将通过实用案例和可视化指南,帮助开发者掌握跟踪程序执行流程、修改运行时行为的关键技能,轻松应对复杂调试场景。 ## 调试前必须掌握的9大黄金法则 📚 高效调试的基础是遵循科学方法论。iOS-Debug-Hacks项目中引用了David Agans的经典调

gitblog_00016的博客 244

我的iOS - 收藏集 - 掘金

33 款驰骋 2017 的 iOS 开源库 - 掘金文/Paweł Białecki译/Mantra原文:https://medium.com/app-coder-... 一句话集成引导页 - iOS - 掘金App首次启动或更新版本用到的引导页 ... 一个用 Swift 写的手势密码库 - iOS - 掘金是对CoreLock的翻译,...

weixin_33696106的博客 349

SwiftMath:打造iOS和macOS上的数学之美

SwiftMath:打造iOS和macOS上的数学之美 在追求极致的用户体验和视觉效果下,SwiftMath脱颖而出,它是一个全面采用Swift编写的库,旨在让iOS和macOS应用能够优雅地展示复杂的数学公式。此项目基于广受好评的iosMath,但更进一步,提供了更快的速度、额外的功能以及原生的支持,无需依赖Web视图或JavaScript。 项目技术分析 SwiftMath通过将LaTeX语言...

gitblog_00896的博客 392

xcode反汇编调试iOS模拟器程序(五)调试objc_msgSend函数

反汇编调试objective-c,遇到最多的就是objc_msgSend这函数了,本节主要讲讲它的实现以及调试过程的一些技巧。 以UIWebView为例子,看看它在loadRequest时做了什么。 首先必须明白,原始代码中调用 [cpp] view plaincopy [uiWebViewInstance loadRequest:reque

水泽木兰 887

婴幼儿喘息家庭护理与雾化治疗全指南

婴幼儿喘息是呼吸道常见症状,主要由支气管痉挛和黏膜水肿引起。其治疗核心在于快速缓解气道阻塞,雾化吸入治疗通过将药物直接送达病灶,具有起效快、副作用小的优势。现代罐式雾化器采用超静音设计和智能温控系统,大大提升了家庭治疗的便利性。在家庭护理中,环境控制尤为关键,包括保持适宜温湿度、避免过敏原等。对于反复发作的患儿,建立症状监测体系和长期随访机制至关重要。合理使用雾化吸入治疗配合科学的家庭护理,能有效控制婴幼儿喘息症状。

weixin_33910385的博客 164

MarkdownView与其他iOS Markdown库对比分析:为什么选择它?

MarkdownView是一款专为iOS平台打造的高性能Markdown渲染库,它采用WKWebView架构,结合JavaScript生态系统的强大能力,为开发者提供了兼具渲染质量、功能丰富度和性能优化的解决方案。在众多iOS Markdown库中,MarkdownView凭借其独特的技术选型和架构设计,成为需要复杂格式渲染场景下的理想选择。 ## 主流iOS Markdown库技术路线对比

gitblog_00854的博客 788

MNTPullToReact未来路线图:iOS手势交互库的发展方向

MNTPullToReact是一款创新的iOS手势交互库,它将传统的下拉刷新功能扩展为多动作交互系统。这个开源库让开发者能够通过一个简单的手势触发多种应用操作,彻底改变了iOS应用的用户体验设计。作为下拉刷新交互的革命性进化,MNTPullToReact为移动应用提供了更直观、更高效的操作方式。 ## 🚀 当前功能概述与成就 MNTPullToReact目前已经实现了令人印象深刻的核心功能。

gitblog_00406的博客 867

移动端 Web 页 input 控制软键盘

从交互层面上来讲,完成一个功能(获得想要的信息)的过程称之为用户路径。用户路径越长,完成功能的复杂度就越高,用户体验也就越差。因此当打开一个需要用户填写信息的表单界面时,为了提高可用性,PC 端一般会将光标聚焦到对应输入框(input),移动端也是同理,让对应的 input 获得 focus 状态,唤起软键盘,方便用户直接输入。 本文暂且不论 PC 端的场景,在移动端(iOS、Android)实

qq_40479190的博客 2949

RichEditorView核心功能深度解析:从基础格式到高级编辑技巧

RichEditorView是一个简单、模块化的iOS富文本编辑器组件,专为Swift开发者设计。这个强大的iOS富文本编辑器库提供了完整的所见即所得(WYSIWYG)编辑体验,让开发者可以轻松地在应用中集成专业的文本编辑功能。无论你是构建笔记应用、博客编辑器还是任何需要文本格式化的iOS应用,RichEditorView都能为你提供完整的解决方案。 ## 🚀 RichEditorView是什

gitblog_00065的博客 471
上一篇: 用Gson和SharedPreferences轻松构建android本地数据缓存
下一篇: Ruby-China for Android客户端开源了
gonjay
博客等级 码龄15年 12粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值