iPhone开发进阶(8)--- 检测屏幕触摸事件

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 13:51 点击:

 

这一回来定制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 的管理责任

摘自:易飞扬

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • UITableView一些方法
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • iphone(object-c)内存管理(1)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1