温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

[IOS]触摸事件和手势

发布时间:2020-07-09 05:40:07 来源:网络 阅读:464 作者:蓬莱仙羽 栏目:移动开发

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

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

[IOS]触摸事件和手势

双击切换图片:

[IOS]触摸事件和手势

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

操作步骤:

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

2.ViewController.h:

#import <UIKit/UIKit.h>  @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的手势控件

- (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


                                           

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI