4三/100
iPhone开发进阶(8)— 检测屏幕触摸事件
iPhone开发进阶(8)--- 检测屏幕触摸事件
这一回来定制 UIView 上的触摸事件,作为例子,只是简单地检测出触摸事件并显示当前坐标在控制台上。
首先添加新文件,如下图:
在显示的对话框中选中 Cocoa Touch Class 的 Objective C class ⇒ UIView
在项目的添加菜单中选择 Touch 。检测触摸时间需要实现下面的函数。
1 2 |
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; |
这个函数由用户触摸屏幕以后立刻被调到。为了自定义他的行为,我们像下面来实现:
1 2 3 4 5 |
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch* touch = [touches anyObject]; CGPoint pt = [touch locationInView:self]; printf("point = %lf,%lf\n", pt.x, pt.y); } |
上面的代码将触摸点的坐标取出,并打印到控制台上。
如果需要得到多点触摸(不只是一根手指)的信息,需要使用 anyObject 实例指定 UIView。
另外,TouchAppDelegate 的 applicationDidFinishLaunching 函数像下面一样实现:
1 2 3 4 5 6 7 8 |
- (void)applicationDidFinishLaunching:(UIApplication *)application { TouchView* view = [[TouchView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)]; view.backgroundColor = [UIColor greenColor]; [window addSubview:view]; [window makeKeyAndVisible]; [view release]; } |
这里用 intiWithFrame 指定的矩形区域可以任意。另外为了明确触摸的区域大小,设定其 view.backgroundColor。
虽然通过 initWithFrame 在 TouchAppDelegate 内创建了 TouchView 的实例、但是通过 addSubview:view 将管理责任交给了 window 。就是说, TouchAppDelegate 与 window 两个实例都对 TouchView 实例实施管理。所以这里用 [view release] 释放 TouchAppDelegate 的管理责任。
相关文章
- iPhone开发之深入浅出 (3) --- ARC之前世今生 - (2012-02-19)
- iPhone开发之深入浅出 (2) --- ARC之@property使用 - (2012-01-04)
- iPhone开发之深入浅出 (1) --- ARC是什么 - (2012-01-01)
- iPhone开发技巧之调试篇(3)--- 程序Crash后的调试技巧 - (2011-11-06)
- iPhone开发之游戏篇(3)--- cocos2d的Actions构成 - (2010-07-05)
- iPhone开发之游戏篇(2) --- cocos2d的Actions - (2010-07-03)
- iPhone开发之游戏篇(1) --- cocos2d的基本概念 - (2010-07-01)
- iPhone开发进阶(11)--- 多线程的使用与注意事项 - (2010-03-09)
- iPhone开发进阶(10)--- 在程序中使用 GPS - (2010-03-07)
- iPhone开发进阶(9)--- 用SQLite管理数据库 - (2010-03-06)
- iPhone开发进阶(7)--- 利用ModalViewController切换View - (2010-03-02)
- iPhone开发进阶(6)--- 编程定制UIButton - (2010-02-27)
- iPhone开发进阶(5) --- 编程定制UIViewController - (2010-02-25)
- iPhone开发进阶(4) --- 使用Makefile自动编译iPhone程序 - (2010-02-23)
- iPhone开发进阶(3) --- iPhone应用程序的启动过程 - (2010-02-21)
- iPhone开发进阶(2) --- iPhone应用程序/项目的构成 - (2010-02-19)
- iPhone开发进阶(1) --- 深入理解iPhone OS/SDK与Objective-C 2.0 - (2010-02-17)
- iPhone、Android、Symbian … 移动设备应用程序开发的趋势与对策 - (2010-02-14)
- 使用org-mode来GTD(3)--- iPhone中使用org-mode - (2010-02-06)
- iPhone开发入门(11)--- 在App Store上发布程序 - (2010-01-21)
- iPhone开发入门(10)--- 设备上运行程序 - (2010-01-19)
- iPhone开发入门(9)--- 实际开发中的应用技巧 - (2010-01-16)
- iPhone开发入门(8)--- 程序画面与控件调整 - (2010-01-05)
- iPhone开发入门(7)--- 从C/C++语言到Objective-C语言 - (2009-12-31)
- iPhone开发入门(6)--- Action与Objective-C - (2009-12-19)

