触摸事件和微信实现原理
触摸事件练习
1.如果想让一个空间随你的手指的移动而移动,那么就再touchmove的方法中。
UITouch *touch = [touches anyObject];
CGPoint asd = [touch locationInView:self.view];
self.redView.center = asd;
2.拦截视图点击方法---->返回谁,就是点了谁
//用于检测具体响应用户触摸点视图的方法
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
return self.blue;
}
3.摇一摇
1>成为第一响应者
- (BOOL)canBecomeFirstResponder
{
return YES;
}
2>在视图出现时,让视图控制器成为第一响应者
- (void)viewDidAppear:(BOOL)animated
{
[self becomeFirstResponder];
}
3>在视图消失时,让视图控制器注销第一响应者的身份
- (void)viewDidDisappear:(BOOL)animated
{
[self canBecomeFirstResponder];
}
4>监听摇晃事件
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"摇晃了,");
}
}
4.关于微信的摇一摇实现思路:
分析微信的功能的实现:
1> 进入界面,貌似什么也没有发生;
2> 摇一摇,咔嚓一声,出现转轮,貌似在干些什么
3> 转轮消失,得到用户信息(网名,男女,距离你的距离)
实现过程:
1> 进入界面,利用CoreLocation(MapKit会具体讲解)定位用户当前的位置;
2> 用户摇 -> 将用户的经纬度,用户账号,摇晃的时间,发送到微信的服务器;
3> 后台处理(1),计算当前时间一定范围内,很难保证同一时间摇晃手机,可以有一个时间的误差,譬如10s
摇晃手机的用户(有可能1个~10000个)
4> 后台处理(2),如果用户过多,计算前10名~20名距离用户最近的摇晃用户的信息,产生列表,并发送给用户手机
5> 用户接到数据后,使用UITableView展现数据
6> 选中表格行,查看用户详细信息,决定是不是需要进一步的交流