ios-webview-call-nativeCode-or-native-call-jsCode

UIWebView中 通过js去调用客户端的代码,客户端回调js代码。
最近因为项目中有一些页面使用H5实现(不得不说给客户端减少了不小压力啊😂😂),但是有webview与客户端的交互,在使用过程当中遇到的问题做了一些总结。

我们模拟两个场景
在webview中点击某一个用户的头像通过客户端NativeCode实现进入该用户的资料页
网页代码

1
2
3
4
5
6
7
8
9
<a href = "tataufo://userprofile">
<img src="avatarurl"></img>
<a>

<script>
function reloadKey(key){
//reload html
}
</script>

1.当用户点击头像的时候,会发送请求 tataufo://userprofile 这是跟客户端之前约定好的一个格式,不需要回调
tataufo 是个AppScheme,userprofile你可以认为你提供给网页的接口,当然你可以传递参数
格式如下:tataufo://userprofile#{‘userid’:3}(这里使用的是json形式的参数)

2.当webview需要调用Native的share,会发送请求 tataufo://share#{‘callback’:’reloadKey’} ,客户端处理完之后会回调reloadKey这个函数

实现如下:

ios-draw-gradient-colors

UIView 实现颜色的渐变的两种方式

1.inserSubLayers

CAGradientLayer *gradientLayer = [CAGradientLayer layer];  // 设置渐变效果
gradientLayer.bounds = self.bounds;
gradientLayer.borderWidth = 0;

gradientLayer.frame = self.bounds;
gradientLayer.colors = [NSArray arrayWithObjects:
                        (id)[[UIColor redColor] CGColor],
                        (id)[UIColor blueColor].CGColor, nil];
//垂直渐变
gradientLayer.startPoint = CGPointMake(1.0, 0.5);
gradientLayer.endPoint = CGPointMake(0.5, 0.0);

//水平渐变
gradientLayer.startPoint = CGPointMake(0.0, 0.5);
gradientLayer.endPoint = CGPointMake(0.5, 1.0);

[self.layer insertSublayer:gradientLayer atIndex:0];

2.通过drawRect

ios-read-userContacts

读取用户通讯录的联系人信息

最近项目中用到上传用户通讯录的功能,做的过程中也遇到了一些问题,包括授权、中英文首字母排序、中英文输入字母搜索匹配等。
这里读取包括读取联系人的邮箱、公司、职位、备注、家乡。

中英文排序和搜索如何实现,我写了一个demo放在了github上

1.iOS6之后读取用户通讯录是必须经过用户授权的,只会授权一次,不管你是允许还是不允许,以后想要在更改用户通讯录的权限,都只能在系统设置里修改。

2.做的过程中还发现其实如果你的读取通讯录的功能做在app内部的网页里,是可以不经用户授权直接跨过系统权限读取,也是可以成功的,H5页面跟app客户端进行交互,调用Native code(网页跟客户端的交互,如果有时间也是想单独总结出一篇,总之就是精力不够啊😂)

前面好像讲了一堆废话,好吧,还是直接上代码吧。

iOS7/8 UITableView/UIScrollView上UIButton不能立即响应高亮的原因及解决办法

如果UIButton比较常见的作为UITableViewCell里的子类,当你在点击它时,它默认不会立马显示高亮,这是因为iOS系统会默认会延迟150ms的时间去检查当前该事件是否能够出发UITableView的滑动,如果 NO,UIScrollView会立马将接收到的手势分发到子视图上,如果YES,默认是不显示高亮的。

1、将UIButton所有属于UIScrollView的父视图的delaysContentTouches属性设置成为NO。
2、继承UIScrollView或UITableView,并重写- (BOOL)touchesShouldCancelInContentView:(UIView*)view方法,让其响应拖动方法

废话不多说,直接上代码 以下是UITableView的实现

第一篇文章

很多时候,自己做过的事情都没有记录下来,回头遇见相同的问题的时候,还是需要去Google,这个是一件非常痛苦的事情,其实写博客,不仅仅是对自己的经验的总结和积累,更是当你遇见的问题,别人也遇见的时候,你的经验的分享就会对别人起到非常大的帮助!更重要是