[IOS]触摸事件和手势

如何使用IOS中的触摸事件和手势,这也是增加我们IOS应用的一个重要的一个功能?下面我来用一个简单的Demo来入门一下吧!

实现的功能具备右滑动和双击操作:

[IOS]触摸事件和手势

友情提醒:要实现两点滑动,按住alt键和shift键试试

操作步骤:

1.创建一个SingleView的项目,在页面上添加一个子view和几个label;

2.ViewController.h:

#import   @interface DXWViewController : UIViewController @property (retain, nonatomic) IBOutlet UILabel *state; @property (retain, nonatomic) IBOutlet UILabel *tapCount; @property (retain, nonatomic) IBOutlet UILabel *xPoint; @property (retain, nonatomic) IBOutlet UILabel *yPoint; @property (retain, nonatomic) IBOutlet UILabel *touchNum; @property (retain, nonatomic) IBOutlet UIView *otherView; @property(retain,nonatomic)UIImageView *imgView; @property(retain,nonatomic)UIImage *img; @end

3.ViewController.m:

#import "DXWViewController.h"  @interface DXWViewController ()  @end  @implementation DXWViewController  //加载图片 -(void)loadimag:(NSString *)imgName {     self.img = [UIImage imageNamed:imgName];     self.imgView = [[UIImageView alloc] initWithImage:self.img];     CGRect rec = CGRectMake(5, 5, 150, 117);     self.imgView.frame = rec;     [self.otherView addSubview:self.imgView];          [self.imgView release]; }  - (void)viewDidLoad {     [super viewDidLoad];     self.img = [UIImage imageNamed:@"flower1.jpg"]; 	//花开     [self loadimag:@"flower1.jpg"];      }  -(void)fun:(NSSet *)touches {     UITouch *touch = [touches anyObject];     int tapCount = [touch tapCount];     CGPoint point = [touch locationInView:self.view];          self.tapCount.text = [NSString stringWithFormat:@"tapCount %d",tapCount];     int touchNum = [touches count];     self.xPoint.text = [NSString stringWithFormat:@"x %.1f",point.x];     self.yPoint.text = [NSString stringWithFormat:@"y %.1f",point.y];     //接受多点,要设置允许多点     self.touchNum.text = [NSString stringWithFormat:@"touchNum %d",touchNum];  } //返回点击次数 -(int)getNumber:(NSSet *)touches {     UITouch *touch = [touches anyObject];     int tapCount = [touch tapCount];     CGPoint point = [touch locationInView:self.view];          self.tapCount.text = [NSString stringWithFormat:@"tapCount %d",tapCount];     int touchNum = [touches count];     self.xPoint.text = [NSString stringWithFormat:@"x %.1f",point.x];     self.yPoint.text = [NSString stringWithFormat:@"y %.1f",point.y];     //接受多点,要设置允许多点     self.touchNum.text = [NSString stringWithFormat:@"touchNum %d",touchNum];     return tapCount;      } BOOL flag = true;  float x=0;  //支持多点 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {          //如果有子view的话如何获取子view的触摸事件     //touches = [event touchesForView:self.otherView];     self.state.text = @"touchesBegin";     [self fun:touches];     [self fun:[event touchesForView:self.otherView]];               if ([self getNumber:[event touchesForView:self.otherView]] == 2) {         if (flag) {                          [self loadimag:@"flower.jpg"];             flag = false;         }         else         {             [self loadimag:@"flower1.jpg"];             flag = true;         }     }               UITouch *touch = [touches anyObject];     CGPoint point = [touch locationInView:self.otherView];     x = point.x;          } -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {      } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {      } -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {     //自己自定义手势     UITouch *touch = [touches anyObject];     CGPoint point = [touch locationInView:self.otherView];     float moveX = 0;     moveX = point.x;     if ((moveX-x)>100) {         NSLog(@"右滑");     } }  - (void)dealloc {     [_state release];     [_tapCount release];     [_xPoint release];     [_yPoint release];     [_touchNum release];     [_otherView release];     [super dealloc]; } @end 

4.要注意,要把页面设置一下,设置能多点识别的属性。

5.也可以通过拖放一个手势控件来实现手势,在页面中有一个Swipe Gesture Recognizer的手势控件

10年的青铜峡网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整青铜峡建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“青铜峡网站设计”,“青铜峡网站推广”以来,每个客户项目都认真落实执行。

- (void)viewDidLoad {     [super viewDidLoad];     //代码创建手势     UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gesture:)];     swipe.direction = UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft;          //添加上手势,控件添加     [self.view addGestureRecognizer:swipe]; }  -(void)gesture:(id)sender {     NSLog(@"left or right"); }  - (IBAction)swipe:(id)sender {     NSLog(@"right"); }

6.实现单击/双击触发事件        

-(void)viewLoad { //点击事件     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fun1)];     //单点触摸     tap.numberOfTouchesRequired = 1;     //点击几次,如果是1就是单击     tap.numberOfTapsRequired = 1;     [self.view addGestureRecognizer:tap]; }  //一次点击事件 -(void)fun1 {     NSLog(@"click1"); }

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

 

转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/17587497

欢迎关注我的微博:http://weibo.com/u/2590571922


                                           


分享文章:[IOS]触摸事件和手势
分享地址:http://pwwzsj.com/article/jsiccs.html