iPhone开发进阶(8)--- 检测屏幕触摸事件
这一回来定制UIView 上的触摸事件,作为例子,只是简单地检测出触摸事件并显示当前坐标在控制台上。
首先添加新文件,如下图:
在显示的对话框中选中Cocoa Touch Class 的Objective C class ⇒UIView
在项目的添加菜单中选择Touch 。检测触摸时间需要实现下面的函数。
- (void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event;
这个函数由用户触摸屏幕以后立刻被调到。为了自定义他的行为,我们像下面来实现:
- (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 函数像下面一样实现:
- (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开发进阶(1) --- 深入理解iPhone OS/SDK与Objective
- iPhone开发进阶(2) --- iPhone应用程序/项目的构成
- iPhone开发进阶(3) --- iPhone应用程序的启动过程
- iPhone开发进阶(4) --- 使用Makefile自动编译iPhone程序
- iPhone开发进阶(5) --- 编程定制UIViewController
- iPhone开发进阶(6)--- 编程定制UIButton
- iPhone开发进阶(7)--- 利用ModalViewController切换View
- iPhone开发进阶(9)--- 用SQLite管理数据库
- iPhone开发进阶(10)--- 在程序中使用GPS
- iPhone开发进阶(11)--- 多线程的使用与注意事项
- 发表评论
-
- 最新评论 更多>>