UITouch触摸事件
UITouch触摸事件
- 主要为三个方法
1.-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
2.
3. UITouch *touch = [touches anyObject];
4. CGPoint point = [touch locationInView:self];
5. start = point;
6. end = point;
7.
8.}
9.
10.-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
11.
12. UITouch *touch = [touches anyObject];
13. CGPoint point = [touch locationInView:self];
14. end = point;
15.
16. [self setNeedsDisplay];
17.}
18.
19.-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
20.
21. UITouch *touch = [touches anyObject];
22. CGPoint point = [touch locationInView:self];
23. end = point;
24.
25. [self setNeedsDisplay];
26.
27.
28.}
29.
- 示例
1.#import "myView.h"
2.
3.@interface myView ()
4.{
5. CGPoint start;
6. CGPoint end;
7.}
8.@end
9.
10.
11.@implementation myView
12.
13.-(instancetype)initWithFrame:(CGRect)frame{
14. if (self = [super initWithFrame:frame]) {
15. self.backgroundColor = [UIColor whiteColor];
16. }
17. return self;
18.}
19.
20.
21.
22.-(void)drawRect:(CGRect)rect{
23.
24. if (start.x != end.x && start.y != end.y) {
25.
26. CGFloat w = fabs(end.x - start.x);
27. CGFloat h = fabs(end.y - start.y);
28.
29. CGFloat x = end.x < start.x ? end.x : start.x;
30. CGFloat y = end.y < start.y ? end.y : start.y;
31.
32. //画圆
33. UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:
34. CGRectMake(x, y, w, h)];
35.
36. //画方
37.// UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(x, y, w, h)];
38.
39. [[UIColor redColor] setStroke];
40. [path stroke];
41. }
42.
43.}
44.
45.-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
46.
47. UITouch *touch = [touches anyObject];
48. CGPoint point = [touch locationInView:self];
49. start = point;
50. end = point;
51.
52.}
53.
54.-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
55.
56. UITouch *touch = [touches anyObject];
57. CGPoint point = [touch locationInView:self];
58. end = point;
59.
60. [self setNeedsDisplay];
61.}
62.
63.-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
64.
65. UITouch *touch = [touches anyObject];
66. CGPoint point = [touch locationInView:self];
67. end = point;
68.
69. [self setNeedsDisplay];
70.
71.
72.}
73.
74.
75.
76.
77.@end
78.
UITouch触摸事件的更多相关文章
- iOS开发——UI进阶篇(十二)事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
触摸事件 在用户使用app过程中,会产生各种各样的事件 一.iOS中的事件可以分为3大类型 触摸事件加速计事件远程控制事件 响应者对象在iOS中不是任何对象都能处理事件,只有继承了UIResponde ...
- 触摸事件UITouch的用法
触摸屏幕是iOS设备接受用户输入的主要方式,包括单击.双击.拨动以及多点触摸等,这些操作都会产生触摸事件. 在Cocoa中,代表触摸对象的类是UITouch.当用户触摸屏幕后,就会产生相应的事件,所有 ...
- 触摸事件,手势识别(UITouch,UIGestureRecognizer)
触摸发生时,UIWindow会有一个队列来存放所有的触摸事件,然后再把这些事件发送给对应的hit-test view,hit-test view会通过touch的四个函数来接收这些事件. 四个函数分别 ...
- 触摸事件UITouch的应用
因为UIView或者UIViewController都是继承与UIResponder ,所以都有UITouch这个事件.当用户点击屏幕的时候,会产生触摸事件. 通过UITouch事件,可以监听到开始触 ...
- iOS:触摸控件UITouch、事件类UIEvent
UITouch:触摸控件类 UIEvent:事件类 ❤️❤️❤️UITouch的介绍❤️❤️❤️ 一.触摸状态类型枚举 typedef NS_ENUM(NSInteger, UITouchPhas ...
- iOS 触摸事件与UIResponder(内容根据iOS编程编写)
触摸事件 因为 UIView 是 UIResponder 的子类,所以覆盖以下四个方法就可以处理四种不同的触摸事件: 1. 一根手指或多根手指触摸屏幕 - (void)touchesBegan:(N ...
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...
- iOS中响应者链条-触摸事件
总体来说,分2个步骤: 一,从上到下寻找合适的控件来处理这个触摸事件.如下图,如果点击了黄色4,则UIApplication -> UIWindow -> 1白色 -> 2橙色 -& ...
- iOS触摸事件
触摸常见的事件有以下几种,触摸事件一般写在view文件中,因为viewController文件有可能控制不止一个view,不适合写触摸事件 // 开始触摸 - (void)touchesBegan:( ...
随机推荐
- IE8一枝独秀的JS兼容BUG
// 例如淡入淡出的封装类文件 function ImagesEff(div,time){ this.arr=[];//装载所有div this.time=time; this.recordOld=n ...
- 6月A项目的总结
对JS效果的要求有几点: 1.顶部导航栏鼠标经过动画. 2.Slider轮播图带有左右箭头,底部有缩略图,缩略图和大图都会自动播放. 3.右侧有个三个按钮的导航菜单,第一个按钮回到整个页面顶部,第二个 ...
- poj 3007 Organize Your Train part II(静态字典树哈希)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6700 Accepted: 1922 Description RJ Freigh ...
- 【26】Remove Duplicates from Sorted Array
[26]Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such th ...
- wamp中的httpd.conf文件设置
ServerName localhost 缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不正确),或者 ...
- poj1611 并查集
题目链接:http://poj.org/problem?id=1611 #include <cstdio> #include <cmath> #include <algo ...
- winscp自动执行脚本
我们经常使用WinSCP工具通过sftp协议上传获取文件,本文描述通过bat批量处理文件. 首先,我们打开dos命令窗口使用 cd \d :D\WinSCP 打开WinSCP安装目录 上传文件: wi ...
- VMware: windows8 与 虚拟机ubuntu 14.04 共享文件夹
假设当前用户为xxx 安装 VMwareTools 1. 打开 VMwareworkstation窗口,选择”虚拟机” -> “重新安装VMwareTools(T)”. 点击之后,会发现 Ubu ...
- Intellij调试debug
先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指 ...
- openresty nginx 安装过程记录
转载请注明原始地址 http://www.cnblogs.com/dongxiao-yang/p/4877799.html 一 :系统版本 1 cat /etc/issue: CentOS relea ...