24H免费课程咨询  TEL:13401595960   QQ:1870218756  微信:13401595960(李老师)

东方博宜

网站首页 > 软件开发资讯 > 安卓开发

【常州iOS开发培训班】iOS开发系列之触摸事件

2018-05-13 22:01:40 东方博宜 阅读

基础知识


三类事件中触摸事件在iOS中是最常用的事件,这里我们首先介绍触摸事件。


在下面的例子中定义一个KCImage,它继承于UIView,在KCImage中指定一个图片作为背景。定义一个视图控制器KCTouchEventViewController,并且在其中声明一个KCImage变量,添加到视图控制器中。既然UIView和UIViewController都继承于UIResponder,那么也就就意味着所有的UIKit控件和视图控制器均能接收触摸事件。首先我们在KCTouchEventViewController中添加触摸事件,并利用触摸移动事件来移动KCImage,具体代码如下:


//

//  KCTouchEvenViewController.m

//  TouchEventAndGesture

//

//  Created by Kenshin Cui on 14-3-16.

//  Copyright (c) 2014年 Kenshin Cui. All rights reserved.

//


#import "KCTouchEvenViewController.h"

#import "KCImage.h"


@interface KCTouchEvenViewController (){

    KCImage *_image;

}


@end


@implementation KCTouchEvenViewController


- (void)viewDidLoad {

    [super viewDidLoad];


    _image=[[KCImage alloc]initWithFrame:CGRectMake(50, 50, 150, 169

                                                            )];

    //_image.userInteractionEnabled=NO;

    [self.view addSubview:_image];

}


#pragma mark - 视图控制器的触摸事件

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    NSLog(@"UIViewController start touch...");

}


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    //取得一个触摸对象(对于多点触摸可能有多个对象)

    UITouch *touch=[touches anyObject];

    //NSLog(@"%@",touch);


    //取得当前位置

    CGPoint current=[touch locationInView:self.view];

    //取得前一个位置

    CGPoint previous=[touch previousLocationInView:self.view];


    //移动前的中点位置

    CGPoint center=_image.center;

    //移动偏移量

    CGPoint offset=CGPointMake(current.x-previous.x, current.y-previous.y);


    //重新设置新位置

    _image.center=CGPointMake(center.x+offset.x, center.y+offset.y);


    NSLog(@"UIViewController moving...");


}


-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    NSLog(@"UIViewController touch end.");

}

@end

现在运行程序:




上面示例中我们用到了UITouch类,当执行触摸事件时会将这个对象传入。在这个对象中包含了触摸的所有信息:


window:触摸时所在的窗口

view:触摸时所在视图

tapCount:短时间内点击的次数

timestamp:触摸产生或变化的时间戳

phase:触摸周期内的各个状态

locationInView:方法:取得在指定视图的位置

previousLocationInView:方法:取得移动的前一个位置

常州东方博宜是一家专注IT,互联网,电脑方面的顶尖培训机构,欢迎社会及院校有志互联网营销,搜索引擎营销的人士,来东方博宜报名学习,互相交流。

常州东方博宜地址:常州天宁区延陵西路2号工人文化宫5号楼

 2.新北区太湖东路9-4号常州创意园E12


Powered by 东方博宜教育咨询江苏有限公司  ©2008-2018 www.czos.cn