首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UIWebView:加载某些URL时未调用的webViewDidStartLoad/webViewDidFinishLoad委托方法

UIWebView是iOS平台上的一个视图控件,用于在应用程序中显示网页内容。它是基于Webkit引擎的一种浏览器控件,可以加载并显示网页、HTML文件、PDF文件等。

UIWebView提供了一系列的委托方法,用于监控网页加载过程中的各个阶段。其中,webViewDidStartLoad和webViewDidFinishLoad是两个常用的委托方法。

webViewDidStartLoad方法在开始加载网页时被调用,可以用于在加载开始前执行一些操作,比如显示加载指示器等。该方法的定义如下:

代码语言:swift
复制
func webViewDidStartLoad(_ webView: UIWebView)

webViewDidFinishLoad方法在网页加载完成后被调用,可以用于在加载完成后执行一些操作,比如隐藏加载指示器、获取网页内容等。该方法的定义如下:

代码语言:swift
复制
func webViewDidFinishLoad(_ webView: UIWebView)

然而,有些情况下,当加载某些URL时,UIWebView可能不会调用这两个委托方法。这可能是由于以下原因之一:

  1. 加载的URL是一个空白页或无效的URL,导致加载过程非常快速,委托方法没有被调用的机会。
  2. 加载的URL使用了重定向或框架嵌套等技术,导致委托方法的调用顺序发生变化或被覆盖。

在这种情况下,可以考虑使用UIWebView的其他委托方法来监控加载过程,如webView:shouldStartLoadWithRequest:navigationType:方法可以用于拦截网页请求、webView:didFailLoadWithError:方法可以用于处理加载失败的情况等。

腾讯云相关产品中,可以使用腾讯云移动浏览器(Tencent X5)来替代UIWebView。腾讯云移动浏览器是基于腾讯X5内核的浏览器解决方案,具有更好的性能和兼容性。您可以通过腾讯云移动浏览器SDK来集成该功能,详情请参考腾讯云移动浏览器产品介绍:腾讯云移动浏览器

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS引入JavaScriptCore引擎框架(一)

但是apple官方并未提供相关方法,不过这边难不倒某些人,有些人发现,通过KVC方式可获取UIWebView对应JSContext,方式如下[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext...我做过一个测试:首先在UIWebViewwebViewDidStartLoad阶段创建JSContext并暴露oc端方法,在加载一级页面js正常调用oc方法,而跳转到二级页面中却无法执行oc方法...;而在webViewDidStartLoad阶段由于并未加载完js文件, 因此js层定义函数在oc端无法执行。     ...其次,在webVIewDidFinishLoad阶段创建JSContext并透出oc方法,由于加载js阶段在webVIewDidFinishLoad阶段之前,因此一级页面js无法调用oc方法,但是二级页面同理也是如此...,但是由于js代码是在iOSUI线程执行,因此为了让js可以调用oc方法,可以通过在js设置setTimeout来让任务放到执行队列末端,先执行oc层webVIewDidFinishLoad方法

1.5K60
  • IOS JavaScriptCore 跳转失去对象和一些BUG总结

    ①  在webViewDidStartLoad注入    现象: 在UIWebViewwebViewDidStartLoad阶段创建JSContext并暴露oc端方法,在加载一级页面js正常调用...oc方法,而跳转到二级页面中却无法执行oc方法;而在webViewDidStartLoad阶段由于并未加载完js文件, 因此js层定义函数在oc端无法执行。    ...②在webVIewDidFinishLoad创建    现象:由于加载js阶段在webVIewDidFinishLoad阶段之前,因此一级页面js无法调用oc方法,但是二级页面同理也是如此   原因...: 如果JS调用OC方法,也就是在webview加载之前那就掉不起来。...js中异步代码,通过这种方式可以完成js调用oc方法; 或者JS设置一个监听监听OC是否加载完成,如果完成就调用方法

    80930

    IOS隐藏键盘

    最近遇到二个键盘会自动弹出问题: 1、UIWebView加载网页后,点击网页内链接在UIWebView内进行跳转,键盘自动弹起; 2、调用选择照片时,iPod上选择照片后也会自动弹出键盘,比如从图库进到具体某个文件夹内...,或者再返回图库,直接点中照片然后编辑时候,都会自动弹出; 问题一是这样处理 - (void)webViewDidStartLoad:(UIWebView*)webView {     [activityIndicatorView...cancelButtonTitle:nil otherButtonTitles:@"OK", nil];     [alterview show];     [alterview release]; } 网页开始加载加载结束关闭键盘并发送关闭键盘事件...,如果webViewDidFinishLoad()不被调用是因为uiwebview对象需要设置delegate为self。...] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil]; } 因为接触ios也不算特别多,暂时就使用了上述方法来处理了

    1.3K20

    UIWebView 浏览器控件一、初始化与三种加载方式二、常用属性和方法三、代理方法 UIWebViewDelegate四、其它案例:

    一、初始化与三种加载方式 UIWebView继承于UIView,因此,其初始化方法和一般view一样,通过alloc和init进行初始化,其加载数据方式有三种: 1.第一种: - (void)loadRequest...:(NSURLRequest *)request; 这是加载网页最常用一种方式,通过一个网页URL来进行加载,这个URL可以是远程也可以是本地,例如加载百度主页 UIWebView * view...UIWebViewDelegate 1.每当webView发送一个请求之前都会先调用这个方法,监听准备加载内容时调用,通过判断请求等参数来返回不同返回值判断是否加载该网页,是JS中执行OC代码桥梁...WebView上 2.开始加载调用方法 - (void)webViewDidStartLoad:(UIWebView *)webView; 3.网页加载完毕执行方法,一般在里面执行JS代码(删除一些节点...stringByEvaluatingJavaScriptFromString:js];} 补充:用JS删除,浏览器console中调试 (1)按标签名删除 (2)按类删除 4.加载失败时调用方法

    1.5K60

    iOS中UIWebView使用详解 原

    iOS中UIWebView使用详解 一、初始化与三种加载方式      UIWebView继承与UIView,因此,其初始化方法和一般view一样,通过alloc和init进行初始化,其加载数据方式有三种...: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用一种方式,通过一个网页URL来进行加载,这个URL可以是远程也可以是本地,...,通过返回值来进行是否加载设置 - (void)webViewDidStartLoad:(UIWebView *)webView; 开始加载调用方法 - (void)webViewDidFinishLoad...:(UIWebView *)webView; 结束加载调用方法 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError...*)error; 加载失败时调用方法 专注技术,热爱生活,交流技术,也做朋友。

    77820

    iOS学习巩固笔记-UIWebViewJavaScript

    加载过程 成为UIWebView代理,遵守UIWebViewDelegate协议,就能监听UIWebView加载过程 - (void)webViewDidStartLoad:(UIWebView...*)webView; 请求完毕(加载数据完毕)时调用这个方法 - (void)webViewDidFinishLoad:(UIWebView *)webView; 请求错误时调用这个方法 - (void...每当将加载请求时候调用方法,返回YES 表示加载该请求,返回NO 表示不加载该请求 //可以在该方法中拦截请求 -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest...[request.URL.absoluteString containsString:@"dushu"]; } //开始加载网页,不仅监听我们指定请求,还会监听内部发送请求 -(void)webViewDidStartLoad...:(UIWebView *)webView //网页加载完毕之后会调用方法 -(void)webViewDidFinishLoad:(UIWebView *)webView //网页加载失败调用方法

    1.2K70

    iOS引入JavaScriptCore引擎框架(二)

    方法,虽然通过KVC可达到目标,但是当APP采用该种hack方法,有很大几率不能通过APP Store审核,这对于一个基于上线商业APP而言是难以忍受,所以我们必须寻找另一种方法来获取UIWebView...webView:didStartProvisionalLoadForFrame:开始加载,在这里获取加载url webView:didReceiveTitle:forFrame...Nick发现     在iOS中,尽管没有暴露WebFrameLoadDelegate,但是在具体实现上仍会判断WebKitimplement有没有实现这个协议某些方法,如果实现则仍会执行,而且在...这样,我们可以在UIWebViewwebViewDidStartLoadwebViewDidFinishLoad之间获取到JSContext,进行oc和js双向通信。...最终oc端接口代码放在webView:didCreateJavaScriptContext:forFrame:中,这样js文件只需加载完毕就可执行oc接口方法;而oc端要访问js接口则可在webVIewDidFinishLoad

    1.5K40

    IOS WebView控件详解

    加载数据方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用一种方式,通过一个网页URL来进行加载,这个URL可以是远程也可以是本地...方法中,一共有4个方法需要注意: //是否允许加载网页,也可获取js要打开url,通过截取此url可与js交互 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest...- (void)webViewDidStartLoad:(UIWebView *)webView; //网页加载完成 - (void)webViewDidFinishLoad:(UIWebView *...#pragma mark 开始加载 //是否允许加载网页,也可获取js要打开url,通过截取此url可与js交互 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest...多了一个加载文件方法,而且WKWebView这些加载方法都有返回值。

    4.8K80

    IOS开发系列——UIWebView专题【整理,部分原创】

    ,使用Ajax,需要注意是UIWebViewDelegate不会监测到Ajaxrequest,也就是再执行Ajax代码,shouldStartLoadWithReuqest等方法并不会被调用。...部分内容参考于stackoverflow 2.1.4UIWebView载入带有锚点(anchor)URL存在问题及解决办法 UIWebView载入带有锚点(anchor)URL存在问题及解决办法...UIWebView加载带有锚点URL(如"file:///Users/admin/home.html#pos"),程序使用javascriptrange.surroundContents方法在网页中为选中文字创建高亮标签...,当页面高度超过屏幕高度,如果页面顶部和初始加载位置不同(进行过滚动),则每次添加高亮,页面就重新跳到初始加载位置,而不是保持当前位置。...PS:如果UIWebView加载URL不带锚点,是不会出现上述问题

    93440

    【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

    : 该方法是 UIPickerViewDelegate 委托方法; /* UIPickerViewDelegate 委托方法, 当选中某个选项 激发方法 row 参数 : 选中选项所在索引...UIWebView 操作 (1) UIWebView 内容加载 UIWebView 加载 :  -- "loadHTMLString : baseURL" 方法 : 加载显示 HTML 字符串; --...:shouldStartLoadWithRequest:navigationType" 方法 : 加载指定 URL 网页回调该方法; -- "webViewDidStartLoad" 方法 : 开始加载网页激发方法...; -- "webViewDidFinishLoad" 方法 : 结束加载网页回调方法; -- "webViewDidFailLoadWithError" 方法 : 加载出现错误回调方法; 3....= self; } - (void) webViewDidStartLoad:(UIWebView *)webView{ } - (void) webViewDidFinishLoad:

    4.5K40

    Flutter 与 iOS 原生 WebView 对比

    测试手机:iPhoneX 系统:iOS12.0 加载速度对比 测试网页打开速度,只需要获取 WebView 在开始加载网页和网页加载完成时间戳,时间戳差即为打开网页时间。...extension WebViewVC: UIWebViewDelegate { public func webViewDidStartLoad(_ webView: UIWebView) {...新浪首页 进行加载对比,为了减小网络对加载速度影响,我们让手机连接同一个网络,分别进行 10 次测试然后取平均值,另外,我们需要关闭 WebView 缓存,防止缓存对加载速度产生影响: private...: widget.url, clearCache: true, appCacheEnabled: false, . . .); 下面使笔者进行 10 次测试所得到数据:...> UIWebView > flutter_webview 占用内存对比 这里查看内存使用是 Xcode debug session 中 memory,首先看之前测试,连续打开十次新浪内存情况

    1.6K20

    iOS开发之WebView

    从字面意思可以看出WebView就是用来加载网页视图,和手机上浏览器类似。   ...1.之前用storyboard拖控件只是看着WebView在哪里静静躺着(如下图所示),一直没有用过,如果想使用的话也很简单,就是把web view拖入到storyboard中即可:今天就写篇博客来应用一下...代码说明:           (1).创建一个NSURLRequest           (2).用myWebView加载NSURLRequest   3.webView委托代理模式也挺简单,截图如下...(1),shouldStartLoadWithRequest:请求URL调用     (2),webViewDidStartLoad:开始加载网页后调用     (3).webViewDidFinishLoad...:加载网页完成后调用     (4).didFailLoadWithError:加载失败调用   4.加载成功后效果如下: ?

    92090

    【IOS开发基础系列】UIWebView专题

    ,也就是再执行Ajax代码,shouldStartLoadWithReuqest等方法并不会被调用。         ...部分内容参考于stackoverflow 2.1.4 UIWebView载入带有锚点(anchor)URL存在问题及解决办法 UIWebView 载入带有锚点(anchor)URL存在问题及解决办法...,遇到如下问题:         UIWebView加载带有锚点URL(如"file:///Users/admin/home.html#pos"),程序使用javascriptrange.surroundContents...方法在网页中为选中文字创建高亮标签,当页面高度超过屏幕高度,如果页面顶部和初始加载位置不同(进行过滚动),则每次添加高亮,页面就重新跳到初始加载位置,而不是保持当前位置。         ...PS:如果UIWebView加载URL不带锚点,是不会出现上述问题

    35930

    UI篇- UIWebView使用大全

    JS方法UIWebView进行交互,调用web页面中需要传参函数,参数需要带单引号,或者双引号(双引号需要进行转义在转义字符前加\),在传递json字符串不需要加单引号或双引号: -(void...有两种方式可根据加载内容 获取UIWebView合适高度,但都需要在网页内容加载完成后才可以,即需要在webViewDidFinishLoad回调中使用。...所以需要在VC中用到webViewDidFinishLoad方法,应在 WebViewJavascriptBridge.m中做设置。 18....UIWebView在 iOS11中使用。 ? UIWebView 在iOS 11上 当顶部 y值设为 0 ,是依然无法盖住UIStatusBar区域,但是滚动就会出现问题了。...如何获取UIWebview加载内容标题 - (void)webViewDidFinishLoad:(UIWebView *)webView { titleLabel.text = [webView

    2K10
    领券