手势识别

IOS设备上识别有两种方式:

1手势识别器(UIGestureRecognizer)

2触摸事件(UITouch)

新建工程,用singleViewApplication模版,工程名TapGestureRecognizer

然后从对象库中拉出ImageView到设计窗口

为了能够让用户接收事件,需要设置它userInteractionEnabled为开启。

打开工程viewController.h

 1 #import <UIKit/UIKit.h>
 2 
 3 @interface ViewController : UIViewController{
 4     BOOL boolTrashEmptyFlag;
 5 }
 6 @property (strong,nonatomic)UIImage *imageTrashFull;
 7 @property (strong,nonatomic)UIImage *imageTrashEmpty;
 8 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
 9 - (IBAction)founTap:(id)sender;
10 
11 
12 @end

其中boolTrashEmptyFlag,作为判断点击图片时,显示是空还是满。

viewControl.m

 1 #import "ViewController.h"
 2 
 3 @interface ViewController ()
 4 
 5 @end
 6 
 7 @implementation ViewController
 8 
 9 - (void)viewDidLoad
10 {
11     [super viewDidLoad];
12     // Do any additional setup after loading the view, typically from a nib.
13     NSBundle *bundle=[NSBundle mainBundle];
14     self.imageTrashFull=[[UIImage alloc] initWithContentsOfFile:[bundle pathForResource:@"Blend Ttrah" ofType:@"png"]];
15     self.imageTrashEmpty=[[UIImage alloc]initWithContentsOfFile:[bundle pathForResource:@"Empty" ofType:@"png"]];
16     boolTrashEmptyFlag=NO;
17     self.imageView.image=self.imageTrashFull;
18     UITapGestureRecognizer *tapRecognizer=[[UITapGestureRecognizer alloc]
19                                            initWithTarget:self
20                                            action:@selector(foundTap:)];
21     tapRecognizer.numberOfTapsRequired=1;
22     tapRecognizer.numberOfTouchesRequired=1;
23     [self.imageView addGestureRecognizer:tapRecognizer];}
24 -(void)foundTap:(UITapGestureRecognizer *)paramSender{
25     if(boolTrashEmptyFlag){
26         self.imageView.image=self.imageTrashFull;
27         boolTrashEmptyFlag=NO;
28     }else{
29         self.imageView.image=self.imageTrashEmpty;
30         boolTrashEmptyFlag=YES;
31     }
32 }
33 
34 - (void)didReceiveMemoryWarning
35 {
36     [super didReceiveMemoryWarning];
37     // Dispose of any resources that can be recreated.
38 }
39 
40 - (IBAction)founTap:(id)sender {
41 }
42 @end

完成。

还有长按手势

代码跟点击差不多

UITapGestureRecognizer *recognizer=[[UITapGestureRecognizer alloc]
                                           initWithTarget:self
 1 -(void)foundTap:(UITapGestureRecognizer *)paramSender{
 2 if(paramSender.state==UIGestureRecognizerStateBegan){
 3     if(boolTrashEmptyFlag){
 4         self.imageView.image=self.imageTrashFull;
 5         boolTrashEmptyFlag=NO;
 6     }else{
 7         self.imageView.image=self.imageTrashEmpty;
 8         boolTrashEmptyFlag=YES;
 9     }
10 }
11 }
12 注:stage=1为长按开始,3则为长按结束

 


                                           action:@selector(foundTap:)];
    recognizer.allowableMovement=100.0f;
recognizer.minimumPressDuration=1.0;
    [self.imageView addGestureRecognizer:recognizer];

另一处不同

 还有pan手势,基本同上,核心略有不同,如下:

1 UIPanGestureRecognizer *recognizer=[[UIPanGestureRecognizer alloc]
2 initWithTarget:self
3 action:@selector(foundTap:)];
4 recognizer.minimumNumberOfTouches=1;
5 recognizer.maxinumNumberOfToucher=1;
6 CGRect frame=CGRectMake(96.0f,68.0f,128.0f,128.0f);
 1 -(IBAction)foundTap:(id)sender{
 2 UIPanGestureRecognizer *paramSender=(UIPanGestureRecognizer*)sender
 3 
 4 if(paramSender.stage!=UIGestureRecognizerStageEnded&&
 5 paramSender.stage!=UIGestureRecognizerStageFailed)
 6 {
 7 CGPoint location=[paramSender locationInView:paramSender.view.superview];
 8 paramSender.view.center=location;
 9 }
10 }

 

posted on 2014-08-19 01:41  flashEye  阅读(247)  评论(0编辑  收藏  举报