您的位置:首页 > 产品设计 > UI/UE

定制 UIView 上的触摸事件

2010-11-24 07:49 453 查看
本教程转自易飞扬的博客,讲授如何检测出触摸事件并显示当前坐标在控制台上。

首先添加新文件,如下图:


在显示的对话框中选中 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 的管理责任。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: