
最近遇到关于获取webview加载网页上的点击事件,三种解决方式~~~
一、跟后台协商好,点击该按钮加载特定url,通过webview的代理方法- (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType 判断加载的url是否是协商好的url;
ps:记得要return NO,否则会加载url
二、通过获取所点击按钮的图片来判断是否点击特定位置
1、给webview的scrollview添加手势
2、实现UIGestureRecognizerDelegate代理方法
document.elementFromPoint 是获取点击坐标的元素
三、通过注入一段JS(需跟web前端协商),返回一段json数据
1、在webview加载完后注入js(具体根据需求定义)
例子:
2、拦截自定义的字段 kqapp://
WebView中的video标签默认就会带控制按键,但是在Android webView播放视频还需要以下几个设置:
需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别,如果不需要的View可以声明不要用加速,但是需要在代码中做
具体如下:
如果要声明整个应用都要加速:< application ... android:hardwareAccelerated ="true">
如果要在Activity中声明,则:<activity ... android:hardwareAccelerated="true" >Window,getWindow.setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED)
如果application或者activity都申明了要硬件加速,但是为了某些原因(比如省电?),一些View不需要硬件加速的话, view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
2.需要在AndroidManifest.xml文件中用上<use-sdk></use-sdk>标签,而且如果是空的还不行,必须写上targetSDK或者minSDK,但是我试验过,不管写版本是多少都没有关系。。。理论上说,Android应该是从3.0( API Level 11)开始可以对2D渲染加速,但是我把targetSDK设置为5都可以使用的,但是这个标签不写还不行。
一般来说,上面的 *** 作做了,就可以使用video标签播放视屏了,如果要支持全屏,还需要做一点 *** 作: 给webview一个WebChromeClient对象,这个WebChromeClient对象需要实现onShowCustomView和onHideCustomView方法
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)