test
来源:互联网 发布:fm2017坎特数据 编辑:程序博客网 时间:2024/05/02 01:40
- 事件处理
- 触摸事件
- 触摸开始执行的方法
- 触摸移动过程中执行的方法
- 结束触摸执行的方法
- 阻断触摸时触发的方法
- 总结
- 晃动事件
- 远程控制事件
- 触摸事件
- 响应者链
- UIGestureRecognizer 手指触控的衍生类
- 小知识
事件处理
UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象
触摸事件
触摸事件:用户通过触摸设备屏幕操作对象、输入数据。支持多点 触摸,包含1个到多个触摸点
触摸开始执行的方法
//touches:手指个数 envet:事件- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ //大小随机 CGFloat x = arc4random() % 276; CGFloat y = arc4random() % 568; CGFloat width = arc4random() % (375 -10) - x + 10; CGFloat height = arc4random() % (667 - 10) - y + 10; self.frame = CGRectMake(x, y, width, height); //颜色随机 CGFloat f = arc4random()%256/255.0; self.backgroundColor = [UIColor colorWithRed:f green:f blue:f alpha:1.0]; NSLog(@"%s,%d",__FUNCTION__,__LINE__);}
触摸移动过程中执行的方法
//实现色块随着鼠标拖动- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ //从事件中获取当前实践中的所有手指 NSSet *alltouches = [event touchesForView:self]; // NSLog(@"%@",alltouches); //此时,alltouches与参数中detouches其实内容是一样的. UITouch *touch = [alltouches anyObject];// NSLog(@"%@",touch); //获取当前这个点在视图中坐标位置 CGPoint p = [touch locationInView:self]; //获取拖动之前的坐标位置 CGPoint p1 = [touch previousLocationInView:self]; //通过改变Center来改变视图的显示位置// CGPoint newCenter;// newCenter.x = self.center.x + (p.x - p1.x);// newCenter.y = self.center.y + (p.y - p1.y);// self.center = newCenter; //通过frame来改变视图的显示位置 CGRect newFrame = self.frame; newFrame.origin.x = self.frame.origin.x + (p.x - p1.x); newFrame.origin.y = self.frame.origin.y + (p.y - p1.y); self.frame = newFrame; NSLog(@"%s,%d",__FUNCTION__,__LINE__);}
结束触摸执行的方法
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"%s,%d",__FUNCTION__,__LINE__);}
阻断触摸时触发的方法
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"%s,%d",__FUNCTION__,__LINE__);}
总结
我写了一个视图控制器,控制的视图中有三个子视图
1视图:点击颜色变化 2视图:拖拽 3视图:变化大小
CGPoint p = [touch locationInView:self]; CGPoint p1 = [touch locationInView:self.test1]; CGPoint p3 = [touch locationInView:self.test3]; NSLog(@"@00@@%lf,%lf",p.x,p.y); NSLog(@"11$$%lf,%lf",p1.x,p1.y); NSLog(@"33$$%lf,%lf",p3.x,p3.y);
得到的结论是 点击到色块的时候输出为0,可以通过这个加Center实现每个色块单独起来
晃动事件
暂无介绍
远程控制事件
暂无介绍
响应者链
UIResponder 响应者类
hit-test 点击检测
UIGestureRecognizer
手指触控的衍生类
在 iPhone 或 iPad 的开发中,除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外,也可以用
UIGestureRecognizer
的衍生类別来进行判断。用 UIGestureRecognizer 的好处在于有现成的手势,开发者不用自己计算手指移动轨迹。UIGestureRecognizer的衍生类別有以下几种:
UITapGestureRecognizer
//Tap(点一下)
UIPinchGestureRecognizer
//Pinch(二指往內或往外拨动)
UIRotationGestureRecognizer
//Rotation(旋转)
UISwipeGestureRecognizer
//Swipe(滑动,快速移动)
UIPanGestureRecognizer
//Pan (拖移,慢速移动
UILongPressGestureRecognizer
//LongPress(长按)
从命名上不难了解這些类別所对应代表的手势,分別是 Tap(点一下)、Pinch(二指往內或往外拨动)、Rotation(旋转)、Swipe(滑动,快速移动)、Pan (拖移,慢速移动)以及 LongPress(长按)。這些手势別在使用上也很简单,只要在使用前定义并添加到对应的视图上即可。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)]; tap.numberOfTapsRequired = 1; //点击数 单击 双击 tap.numberOfTouchesRequired = 1; //手指数 多手触摸 [_loginView addGestureRecognizer:tap]; [tap release];
小知识
UIImageView
UILabel
userInteractionEnabled
默认交互是关闭的 其他是默认开启的
- test
- test
- test
- test
- test
- test
- test
- Test
- test
- Test
- test
- test
- test
- test
- test
- test
- test
- Test
- Android Studio熟悉Log日志的运用
- 简单了解 函数重载与函数模板
- 日拱一卒(五十二)
- oveWindow下出现Debug Assertion Failed!
- ODBC学习(一)基本理论
- test
- 【我就看看不说话】UIActivity
- VC维与DNN的Boundary
- 黑马程序员——多线程基本概念
- 3-28(错误的 错在哪儿呢)
- spark源码学习(二)------------spark-shell启动分析
- 增强for循环
- C++ Tutorial: Sockets - Server & Client using QT - 2015
- Mongodb安装