UIWebView使用

Swift UIWebView的使用 swift结合webView定制浏览器 webview的介绍 webview的基本使用步骤 简单的浏览器效果实现 ·WebView的介绍 在IOS9中,涉及到对网页的操作,基本上都可以使用UIWebView的进行实现。你可以使用UIWebView Class将网页内容嵌入到你的APP内。UIWebView不仅支持外链内容的获取,而且可以加载本地HTML代码进行展示,对于IOS8以前(包括IOS8) 阅读详情

设置UIWebView透明

  1. [webview setBackgroundColor:[UIColor clearColor]];  
  2.   
  3. webview.opaque = NO;  


禁止UIWebView滚动 

  1. webView.scrollView.bounces = NO; //__IPHONE_5_0  
  1. UIScrollView *scrollView = (UIScrollView *)[[webView subviews] objectAtIndex:0];  
  2. scrollView.bounces = NO;   



获取UIWebView高度

  1. - (void)webViewDidFinishLoad:(UIWebView *)webView1  
  2. {  
  3.     UIScrollView *scrollView = (UIScrollView *)[[webView subviews] objectAtIndex:0];  
  4.     CGFloat webViewHeight = [scrollView contentSize].height;  
  5.     NSString *curHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"];  
  6.   
  7.     CGRect newFrame = webView.frame;  
  8.     newFrame.size.height = webViewHeight;  
  9.     webView.frame = newFrame;   
  10. }  



使用JS给UIWebView添加事件响应

1.首先定义事件的JavaScript

  1. // timeStamp 微秒  
  2. static NSString * const webTouchJavaScriptString =  
  3.     @"<script language=\"javascript\">document.ontouchstart=function(event){\  
  4.     x=event.targetTouches[0].clientX;\  
  5.     y=event.targetTouches[0].clientY;\  
  6.     time=event.timeStamp;\  
  7.     document.location=\"wiweb:touch:start:\"+x+\":\"+y+\":\"+time;};\  
  8.     document.ontouchmove=function(event){\  
  9.     x=event.targetTouches[0].clientX;\  
  10.     y=event.targetTouches[0].clientY;\  
  11.     document.location=\"wiweb:touch:move:\"+x+\":\"+y;};\  
  12.     document.ontouchcancel=function(event){\  
  13.     document.location=\"wiweb:touch:cancel\";};\  
  14.     document.ontouchend=function(event){\  
  15.     time=event.timeStamp;\  
  16.     document.location=\"wiweb:touch:end:\"+time;}; </script>";  

2.组织字符串
  1. NSString *webviewText = @"<style>body{margin:0;background-color:transparent;color:#000000;word-wrap:break-word;word-break:break-all;font:18px/22px system}</style>";  
  2. NSString *htmlString = [webviewText stringByAppendingFormat:@"%@", @"自定SDFSDFSDFSDF义字体fsdgjdlagj asdkgjksdh卡号给卡仕达;逛了会街啊啊流口水 http://www.baidu.com 的感觉卡拉;四大金刚;拉开始打工绿卡;但是结果来看;就爱上的看过就卡的;上来讲赶快来;啊都是经过后ihgoiadsg;肯定是噶上的好;拉克丝的价格爱国阿斯顿改了可"];  
  3.   
  4. NSString *newHTMLString=[htmlString stringByAppendingString:webTouchJavaScriptString];  

3.事件响应
  1. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType  
  2. {  
  3.     BOOL result = YES;  
  4.     NSURL *requestURL =[[request URL] retain];  
  5.     NSString *requestString = [[request URL] absoluteString];  
  6.     static BOOL bstart = NO;  
  7.     static BOOL bmove = NO;  
  8.     static double lasttime = 0;  
  9.       
  10.     NSString *str = [requestURL scheme];  
  11.     if ( ([str isEqualToString:@"http"] || [str isEqualToString:@"https"] || [str isEqualToString:@"mailto"] || [str isEqualToString:@"tel"])  
  12.         && (navigationType == UIWebViewNavigationTypeLinkClicked) )  
  13.     {  
  14.         result = ![[UIApplication sharedApplication] openURL:[requestURL autorelease]];  
  15.     }  
  16.     else  
  17.     {  
  18.         [requestURL release];  
  19.         NSArray *components = [requestString componentsSeparatedByString:@":"];  
  20.         if ([components count] > 2   
  21.             && [(NSString *)[components objectAtIndex:0] isEqualToString:@"wiweb"]  
  22.             && [(NSString *)[components objectAtIndex:1] isEqualToString:@"touch"])  
  23.         {  
  24.             NSString *eventString=[components objectAtIndex:2];  
  25.             if ([eventString isEqualToString:@"start"])  
  26.             {  
  27.                 float pointX=[[components objectAtIndex:3] floatValue];  
  28.                 float pointY=[[components objectAtIndex:4] floatValue];  
  29.                 double time=[[components objectAtIndex:5] doubleValue];  
  30.                 CGPoint aPoint = CGPointMake(pointX, pointY);  
  31.                 NSLog(@"start: %@", NSStringFromCGPoint(aPoint));  
  32.                 NSLog(@"start time: %0f   interval: %0f", time/1000, (time - lasttime)/1000);  
  33.                 lasttime = time;  
  34.                 bstart = YES;  
  35.                 bmove = NO;  
  36.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  
  37.             }  
  38.             else if ([eventString isEqualToString:@"move"])  
  39.             {  
  40.                 float pointX=[[components objectAtIndex:3] floatValue];  
  41.                 float pointY=[[components objectAtIndex:4] floatValue];  
  42.                 CGPoint aPoint=CGPointMake(pointX, pointY);  
  43.                 NSLog(@"move: %@", NSStringFromCGPoint(aPoint));  
  44.                 bmove = YES;  
  45.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  
  46.             }  
  47.             else if ([eventString isEqualToString:@"cancel"])  
  48.             {  
  49.                 NSLog(@"cancel");  
  50.                 bstart = NO;  
  51.                 bmove = NO;  
  52.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  
  53.             }  
  54.             else if ([eventString isEqualToString:@"end"])  
  55.             {  
  56.                 double time=[[components objectAtIndex:3] doubleValue];  
  57.                 NSLog(@"end");  
  58.                 NSLog(@"bstart: %d -- bmove: %d", bstart, bmove);  
  59.                 NSLog(@"end time: %0f   interval: %0f", time/1000, (time - lasttime)/1000);  
  60.                 if (bstart && !bmove)  
  61.                 {  
  62.                     if (time - lasttime > 400)  
  63.                     {  
  64.                         NSLog(@"LongPress!!!!!!");  
  65.                     }  
  66.                     else  
  67.                     {  
  68.                         NSLog(@"Click!!!!!!");  
  69.                     }  
  70.                 }  
  71.                 bstart = NO;  
  72.                 bmove = NO;  
  73.             }  
  74.               
  75.             return NO;  
  76.         }  
  77.     }  
  78.       
  79.     NSURL *url = [request URL];  
  80.     NSString *curUrl= [url absoluteString];  
  81.     NSLog(@"cururl: %@", curUrl);  
  82.       
  83.     return result;  
  84. } 



一、简单的stringByEvaluatingJavaScriptFromString使用。
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];

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

NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='xxx';"];


NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "];

上面的功能我们可以封装到一个js函数中,将这个函数插入到页面上执行,代码如下:

[webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');" 
         "script.type = 'text/javascript';" 
         "script.text = \"function myFunction() { " 
         "var field = document.getElementsByName('q')[0];" 
         "field.value='朱祁林';" 
         "document.forms[0].submit();" 
         "}\";" 
         "document.getElementsByTagName('head')[0].appendChild(script);"];  
       
 [webView stringByEvaluatingJavaScriptFromString:@"myFunction();"]; 

联想X3650M5服务器双模式切换实战:UEFI与Legacy BIOS如何选择? 本文深入探讨了联想X3650 M5服务器在UEFI与Legacy BIOS启动模式间的选择策略。文章从技术原理、决策矩阵、实战切换步骤及后期验证等方面,为企业IT管理员提供了基于操作系统兼容性、存储架构、安全合规与运维习惯的完整决策框架,帮助其在数据中心硬件生命周期管理中做出明智选择。 阅读详情

相关推荐

手把手教你如何修改YOLO11的模型结构(以CBAM和可变性卷积为例)

YOLO11修改模型结构

2401_86807530的博客 1万+

UIWebView

简单介绍 什么是UIWebView UIWebView是iOS内置的浏览器控件 系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但能加载远程的网页资源,还能加载绝大部分的常见文件 html\htm pdf,doc,ppt,txt mp4 UIWebView常用的加载资源的方法 -(void)loadRequest:(NSURLRequest *)request; 常用属性和方法 重新加载(刷新) -(void)reload; 停止加载 - (void

weixin_44729579的博客 1441

LLM大模型基础知识【一】

大语言模型(LLM):是指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。视觉大模型:是指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。

lin_xi_xi的博客 2872

UIWebView 使用详解

一. 初始化与加载UIWebView继承于UIView与view的初始化相同. UIWebView * view = [[UIWebView alloc]initWithFrame:self.view.frame]; 三种加载方式为:1.loadRequest: 2.loadHTMLString: baseURL: 3.loadData:MIMEType:textE

Sunny_love92的博客 599

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南

本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。

weixin_29278805的博客 617

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释

书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata)

qq_42090739的博客 1万+

UIWebView的使用

UIWebView是网页视图控件,用来显示网页内容。功能类似于浏览器。 1、goBack功能使用时,需要在已经打开过第二层及以上子链接的情况下才能返回打开上一层的链接 2、goForward功能使用时,需要在已经实现goBack功能的情况下才能实现,即已经存在缓存功能 3、UIWebView是UIScrollView的子类,拥有scrollView的相关属性 4、扩展进阶功

番薯大佬的专栏 869

利用 Openocd 和 FT2232H 实现 ARMv8(Coretex-A53)高效调试方案

本文详细介绍了如何利用开源工具OpenOCD与高性能USB转接芯片FT2232H,构建一套针对ARMv8架构(如Cortex-A53)的高效、低成本调试方案。内容涵盖从环境搭建、驱动配置、核心调试架构解析到实战问题排查的全过程,帮助开发者实现对多核处理器的透明、可控调试,是嵌入式Linux及底层开发的实用指南。

weixin_29163581的博客 279

iOS:UIWebView使用

一、将UIWebView控件拖动到Main.storyboard面板中,按住Ctrl+鼠标左键,拖动到如下位置,自动生成webWv成员变量: //实现UIWebViewDelegate,可以重写一些WebView的方法 @interface ViewController () <UIWebViewDelegate> @property (weak, nonatomic) IBOu...

a526001650a的专栏 224

微信小程序 - 详解苹果ios手机请求不到数据访问不了接口,但安卓却可以正常访问。wx.request苹果手机IOS请求失败、安卓可以请求成功(微信小程序上线后苹果手机不能访问接口,网络请求失败排查)

微信小程序上线后,苹果手机请求不到数据,安卓可以,微信小程序,安卓可以调接口,苹果调不了的解决方案,微信小程序:IOS访问不了接口,安卓可以正常访问,微信小程序ios版本连接不了服务器,小程序Android可以请求,ios请求失败wx.request,成功上线的小程序,安卓机可以正常访问使用,苹果微信小程序不执行请求,苹果系统无法加载数据,微信小程序 iOS 网络失败,微信小程序接口请求在ios端报错,苹果手机真机调试微信小程序出现网络请求失败,微信小程序 安卓正常 ios调接口显示网络请求失败,微信小程序

🏆 前端领域优质创作者 4359

Android性能分析深度指南:Perfetto工具全面解析

本文深入探讨Android性能优化工具Perfetto的应用与实践。作为Google推出的新一代追踪系统,Perfetto整合了CPU调度、内存分配、电池状态等多维度分析功能,通过高性能数据处理和可视化界面帮助开发者定位性能瓶颈。文章系统介绍了Perfetto的架构原理、配置方法和核心功能,包括CPU性能分析、内存泄漏检测等关键技术。通过电商应用卡顿优化的实战案例,展示了如何利用数学建模(如帧时间公式$T_{\text{render}}\leq16.67\text{ms}$)指导性能调优。

郑伟强dev的专栏 144

swift 之UIWebView

swift 关于web的知识点

NoPolun_iOS的博客 1688

在 Fiori Elements Object Page 的表格中用 UI.Hidden 隐藏列:语义、边界与落地实践全解析

摘要: Fiori Elements的Object Page表格中,UI.Hidden注解支持静态和动态隐藏列。动态隐藏分为两种:基于父实体属性隐藏整列,或基于子实体属性按行隐藏单元格。关键约束包括:支持服务端操作的列禁止使用动态隐藏,否则会导致UX不一致。ABAP CDS不支持路径式UI.Hidden,需改用XML注解。该功能需与UI.Importance、个性化等机制明确区分,避免混淆。对于可能参与排序/过滤的列,建议仅使用静态隐藏。实际应用中需注意注解位置(整列或单元格级)和业务场景的匹配。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 204

uiwebview html 位置,UIWebView 详解

UIWebView用于在App中嵌入网页内容,通常情况下是html格式的网页,也支持pdf, word等文档。首先让我们了解一下UIWebView有哪些优点:可跨平台开发一次可以部署iOS、Android等平台。发布更新快在服务器端发布,能够实时更新终端展示,便于快速升级以及紧急修复bug。排版布局能力强强大的HTML+CSS让人膜拜世界上有十全十美的人么?也许只有上帝吧。UIWebView的缺点...

weixin_39837105的博客 242

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

UIWebView - 使用方法总结

现在对于混合式移动端开发越来越流行,因为开发成本上、速度上都比传统的APP开发要好,混合式开发是传统模式与PC网页端相结合的模式。那么提到了 APP的混合模式开发,在Android开发中有WebView作为混合模式开发的桥梁,当然在IOS中也同样有一个 UIWebView 组件来作为混合模式开发的桥梁,那么下面就对UIWebView的一些基本知识详解一下。

CatStarXcode的博客 4315

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

iOS开发之UIWebView

UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图: 我们创建一个Window-based Application程序命名为:UIWebViewDemo UIWebView...

chenqunan3231的博客 125

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

熟悉UIWebView

 UIWebView 使用基于手机 网络环境问题 在UIWebView控件使用的时候,程序习惯添加UIActivityIndicatorView用以控制UIWebview的加载等待,在等待的时间内用户不允许操作,所以我们还要在当前的UIWebview上添加一个透明的view(opaqueview)用以防止用户点击,然后把 UIActivityIndicatorView添加到我们自己定义的vie

彬琪 的 Iphone笔记 1331

UIWebView加入JS执行

UIWebView是iOSsdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图: 我们创建一个Window-basedApplication程序命名为:UIWebViewDemo UIWebView的loadRequest可以用来加载一个url地址,它需要一个NSURLRequest参数。我

guyueyan213的专栏 7345

从 UIWebView 到 WKWebView

①本文章适合有 UIWebView 基础的人看,如果实在没用过的话,至少你要知道 UIWebView 是个什么东西。 ② UIWebView 和 WKWebView 的区别 WKWebView 更快(占用内存可能只有 UIWebView 的1/3~1/4),没有缓存,更为细致地拆分了 UIWebViewDelegate 中的方法。 想要了解更多关于 WKWebView 的特性的,可以自行 Go

妙妙的博客 746

UIWebView 替换 WKWebView

已经快要到苹果规定更新包不允许使用UIWebView的最后期限了,今天刚把项目中的UIWebView替换完成,记录一下具体遇到的问题 目录一:基本使用二:替换1、scalesPageToFit 属性替换:2、UIWebView 和WKWebView对应代理方法2.1、shouldStartLoadWithRequest2.2、开始加载2.3、加载成功2.4、加载失败3、Native和JS互相调用:3.1、Native调用js3.2、js调用Native4、左滑返回上一步 一:基本使用 首先说下基本用法: U

小歲月丶太着急 1678

IOS之UIWebView的使用

转自:http://www.2cto.com/kf/201502/378706.html 刚接触IOS开发1年多,现在对于混合式移动端开发越来越流行,因为开发成本上、速度上都比传统的APP开发要好,混合式开发是传统模式与PC网页端相结合的模式。那么提到了 APP的混合模式开发,在Android开发中有WebView作为混合模式开发的桥梁,当然在IOS中也同样有一个 UIWebView

zhanglizhi111的博客 2118

UIWebView 使用

基于手机 网络环境问题在UIWebView控件使用的时候,程序习惯添加UIActivityIndicatorView用以控制UIWebview的加载等待,在等待的时间内用户不允许操作,所以我们还要在当前的UIWebview上添加一个透明的view(opaqueview)用以防止用户点击,然后把UIActivityIndicatorView添加到我们自己定义的view(opaqu...

baji615346的专栏 114
上一篇: iOS 地图位置处理
下一篇: Could not instantiate class named NSLayoutConstraint
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值