亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

[iOSUI進階-3.2]手勢識別器UIGestureRecognizer

2019-11-14 19:39:15
字體:
來源:轉載
供稿:網友
A.系統提供的手勢識別器
Image(8)
 
1.敲擊手勢 UITapGestureRecognizer
numberOfTapsRequired: 敲擊次數
numberOfTouchesRequired: 同時敲擊觸碰數(手指數)
 1 - (void) testTap { 2     // 創建手勢識別器 3     UITapGestureRecognizer *taPRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRun:)]; 4     tapRec.numberOfTapsRequired = 3; // 觸發需要點擊的次數 5     tapRec.numberOfTouchesRequired = 2; // 觸發需要同時點擊的點數目 6     7     // 配置手勢識別器到控件 8     [self.hvwView addGestureRecognizer: tapRec]; 9 }10 11 /** tap手勢的事件處理方法 */12 - (void) tapRun:(UITapGestureRecognizer *) tapRec {13     NSLog(@"tapRun");14 }

 

2.長按手勢 UILongPressGestureRecognizer
minimumPressDuration: 長按生效時間
numberOfTouchesRequired: 需要的同時點擊數
numberOfTapsRequired: 需要的點擊次數
allowableMovement: 長按有效移動范圍(從點擊開始,長按移動的允許范圍)
ps:移動的時候會不斷調用目標方法
1 - (void) testLongPress {2     UILongPressGestureRecognizer *longRec = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressRun:)];3    4     longRec.minimumPressDuration = 2; // 長按生效時間5     longRec.allowableMovement = 50; // 長按允許移動范圍,單位:px6    7     [self.hvwView addGestureRecognizer:longRec];8 }
 
3.輕掃手勢 UISwipeGestureRecognizer
direction:掃的方向 上下左右
1 typedef enum {2    UISwipeGestureRecognizerDirectionRight = 1 << 0,3    UISwipeGestureRecognizerDirectionLeft  = 1 << 1,4    UISwipeGestureRecognizerDirectionUp    = 1 << 2,5    UISwipeGestureRecognizerDirectionDown  = 1 << 36 } UISwipeGestureRecognizerDirection;
 
1 - (void) testSwipe {2     UISwipeGestureRecognizer *swipeRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRun:)];3     swipeRec.direction = UISwipeGestureRecognizerDirectionRight; // 輕掃的方向4    5     [self.hvwView addGestureRecognizer:swipeRec];6 }

 

4.捏合手勢 UIPinchGestureRecognizer
scale: 捏合的距離
 
 1 - (void) testPinch { 2     UIPinchGestureRecognizer *rec = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchRun:)]; 3     4     [self.hvwView addGestureRecognizer:rec]; 5 } 6  7 - (void) pinchRun:(UIPinchGestureRecognizer *) rec { 8     rec.view.transform = CGAffineTransformScale(rec.view.transform, rec.scale, rec.scale); 9    10     // 一定要復位!?。〔蝗话醋∧蠛蠒粩喁B加倍數11     rec.scale = 1;12 }
 
Image(9)  Image(10)
 
5.旋轉手勢 UIRotationGestureRecognizer
rotation: 旋轉了的角度
 1 - (void) testRotation { 2     UIRotationGestureRecognizer *rotationRec = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationRun:)]; 3     4     [self.hvwView addGestureRecognizer:rotationRec]; 5 } 6  7 - (void) rotationRun:(UIRotationGestureRecognizer *) rec { 8     rec.view.transform = CGAffineTransformRotate(rec.view.transform, rec.rotation); 9    10     // 一定要復位!??!不然會在按住旋轉的時候會不斷疊加rotation11     rec.rotation = 0;12 }
 
Image(11)
 
6.拖曳手勢 UIPanGestureRecognizer
相對始點拖曳距離:[pan translationInView:pan.view]
 1 - (void) testPan { 2     UIPanGestureRecognizer *rec = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRun:)]; 3     4     [self.hvwView addGestureRecognizer:rec]; 5 } 6  7 - (void) panRun:(UIPanGestureRecognizer *) rec { 8     // 取得拖曳距離 9     CGPoint movedDistance = [rec translationInView:rec.view];10     CGPoint viewCenter = rec.view.center;11     viewCenter.x += movedDistance.x;12     viewCenter.y += movedDistance.y;13     rec.view.center = viewCenter;14    15     // 復位拖曳距離16     [rec setTranslation:CGPointZero inView:rec.view];17 }
 
 
Image(12)
 
 
B.一般情況只能使用一個識別器,使用代理設置才能同時使用多個識別器
Image(13)
 
1.遵守協議:
1 @interface ViewController () <UIGestureRecognizerDelegate>
 
2.給需要同時進行識別的手勢識別器設置代理
1 rec.delegate = self;
 
3.實現手勢識別器同時使用方法
1 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {2    3     // 任何兩種手勢識別器都能同時使用4     return YES;5 }
 
  1 //  2 //  ViewController.m  3 //  GestureRecognizerTest  4 //  5 //  Created by hellovoidworld on 15/1/13.  6 //  Copyright (c) 2015年 hellovoidworld. All rights reserved.  7 //  8   9 #import "ViewController.h" 10  11 @interface ViewController () <UIGestureRecognizerDelegate> 12  13 @property (weak, nonatomic) IBOutlet UIView *hvwView; 14  15 @end 16  17 @implementation ViewController 18  19 - (void)viewDidLoad { 20     [super viewDidLoad]; 21     // Do any additional setup after loading the view, typically from a nib. 22     23 //    [self testTap]; 24 //    [self testLongPress]; 25 //    [self testSwipe]; 26     [self testRotation]; 27     [self testPinch]; 28     [self testPan]; 29 } 30  31 - (void) testTap { 32     // 創建手勢識別器 33     UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRun:)]; 34     tapRec.numberOfTapsRequired = 3; // 觸發需要點擊的次數 35     tapRec.numberOfTouchesRequired = 2; // 觸發需要同時點擊的點數目 36     37     // 配置手勢識別器到控件 38     [self.hvwView addGestureRecognizer: tapRec]; 39 } 40  41 /** tap手勢的事件處理方法 */ 42 - (void) tapRun:(UITapGestureRecognizer *) tapRec { 43     NSLog(@"tapRun"); 44 } 45  46 - (void) testLongPress { 47     UILongPressGestureRecognizer *longRec = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressRun:)]; 48     49     longRec.minimumPressDuration = 2; // 長按生效時間 50     longRec.allowableMovement = 50; // 長按允許移動范圍,單位:px 51     52     [self.hvwView addGestureRecognizer:longRec]; 53 } 54  55 - (void) longPressRun:(UILongPressGestureRecognizer *) rec { 56     NSLog(@"longPress"); 57 } 58  59 - (void) testSwipe { 60     UISwipeGestureRecognizer *swipeRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRun:)]; 61     swipeRec.direction = UISwipeGestureRecognizerDirectionRight; // 輕掃的方向 62     63     [self.hvwView addGestureRecognizer:swipeRec]; 64 } 65  66 - (void) swipeRun:(UISwipeGestureRecognizer *) rec { 67     NSLog(@"swipe"); 68 } 69  70 - (void) testRotation { 71     UIRotationGestureRecognizer *rotationRec = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationRun:)]; 72     rotationRec.delegate = self; 73     74     [self.hvwView addGestureRecognizer:rotationRec]; 75 } 76  77 - (void) rotationRun:(UIRotationGestureRecognizer *) rec { 78     rec.view.transform = CGAffineTransformRotate(self.hvwView.transform, rec.rotation); 79     80     // 一定要復位?。?!不然會在按住旋轉的時候會不斷疊加rotation 81     rec.rotation = 0; 82 } 83  84 - (void) testPinch { 85     UIPinchGestureRecognizer *rec = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchRun:)]; 86     rec.delegate = self; 87     88     [self.hvwView addGestureRecognizer:rec]; 89 } 90  91 - (void) pinchRun:(UIPinchGestureRecognizer *) rec { 92     rec.view.transform = CGAffineTransformScale(rec.view.transform, rec.scale, rec.scale); 93     94     // 一定要復位?。。〔蝗话醋∧蠛蠒粩喁B加倍數 95     rec.scale = 1; 96 } 97  98 - (void) testPan { 99     UIPanGestureRecognizer *rec = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRun:)];100     rec.delegate = self;101    102     [self.hvwView addGestureRecognizer:rec];103 }104 105 - (void) panRun:(UIPanGestureRecognizer *) rec {106     // 取得拖曳距離107     CGPoint movedDistance = [rec translationInView:rec.view];108     CGPoint viewCenter = rec.view.center;109     viewCenter.x += movedDistance.x;110     viewCenter.y += movedDistance.y;111     rec.view.center = viewCenter;112    113     // 復位拖曳距離114     [rec setTranslation:CGPointZero inView:rec.view];115 }116 117 - (void)didReceiveMemoryWarning {118     [super didReceiveMemoryWarning];119     // Dispose of any resources that can be recreated.120 }121 122 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {123    124     // 任何兩種手勢識別器都能同時使用125     return YES;126 }127 128 @end
 
#mark:
因為使用的是transform形變進行縮放、旋轉,所以再進行拖曳的時候是不能正常進行的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线播放国产一区中文字幕剧情欧美| 久久精品视频va| 菠萝蜜影院一区二区免费| 精品国产一区av| 亚洲va欧美va国产综合剧情| 国产一区二区激情| 精品国产电影一区| 91国内揄拍国内精品对白| 亚洲国产日韩一区| 国产一区二区三区在线| 日韩中文字幕在线视频| 亚洲人在线视频| 欧亚精品在线观看| 亚洲天堂色网站| 欧美性xxxx| 95av在线视频| 日韩av中文字幕在线免费观看| 亚洲一区二区三区久久| 国产精品久久久久77777| 日韩中文理论片| 精品中文字幕久久久久久| 国产成人精品日本亚洲专区61| 久久免费观看视频| 一区二区三区美女xx视频| 亚洲精品久久久久久久久久久久久| 久久久精品一区| 午夜精品福利视频| 欧美激情免费在线| 亚洲黄色av女优在线观看| 亚洲精品美女视频| 久久国内精品一国内精品| 成人国产精品免费视频| 国产精品视频免费在线观看| 日韩中文字幕免费| 国产综合在线看| 91国在线精品国内播放| 亚洲2020天天堂在线观看| 91国产视频在线| 成人www视频在线观看| 亚洲一区二区精品| 欧美性受xxxx黑人猛交| 亚洲欧美日韩中文在线制服| 亚洲国产成人91精品| 97精品一区二区三区| 亚洲最大的免费| 国模精品系列视频| 日韩久久精品成人| 国产成人精品av| 全球成人中文在线| 久久精品一区中文字幕| 欧美国产视频日韩| 国a精品视频大全| 欧美精品第一页在线播放| 亚洲国产精品人久久电影| 久久天天躁狠狠躁夜夜躁2014| 欧美成人小视频| 久久久久亚洲精品成人网小说| 日韩av在线不卡| 欧美一级黑人aaaaaaa做受| 国产日韩欧美夫妻视频在线观看| 国产美女精品免费电影| 久久久亚洲欧洲日产国码aⅴ| 亚洲欧美日韩天堂一区二区| 日韩电影在线观看中文字幕| 欧美日韩亚洲精品内裤| 精品日本美女福利在线观看| 色综合久久久久久中文网| 大量国产精品视频| 久久久久久久影视| 国产成人精品视频| 欧美成人激情视频免费观看| 久久香蕉国产线看观看网| 国产欧美日韩精品专区| 欧美精品一区二区三区国产精品| 91九色国产社区在线观看| 日本电影亚洲天堂| 欧美电影院免费观看| 国产精品99久久久久久久久久久久| 黄色成人av网| 在线观看欧美成人| 狠狠躁18三区二区一区| 亚洲第一网站男人都懂| 国产伊人精品在线| 中文字幕日韩综合av| 国内精品久久久久久影视8| 正在播放欧美视频| 红桃视频成人在线观看| 欧美尺度大的性做爰视频| 在线视频欧美日韩| 国产精品激情av电影在线观看| 欧美性猛交xxx| 久久中文精品视频| 久久91精品国产91久久久| 精品久久久久人成| 亚洲精品第一国产综合精品| 日韩中文娱乐网| 最新中文字幕亚洲| 亚洲精品自在久久| 91精品综合久久久久久五月天| zzjj国产精品一区二区| 992tv在线成人免费观看| 久久97久久97精品免视看| 日本成人黄色片| www.精品av.com| 91色在线观看| 精品国产自在精品国产浪潮| 国产精品自产拍在线观看| 欧美日韩一区二区三区| 亚洲第一中文字幕| 日本精品中文字幕| 国产色婷婷国产综合在线理论片a| 在线观看精品自拍私拍| 久久精品国产成人精品| 亚洲国产成人av在线| 91社区国产高清| 成人免费激情视频| 亚洲片av在线| 色综合久久88色综合天天看泰| 欧美国产日韩一区| 亚洲精品自产拍| 国产精品夫妻激情| 日本一欧美一欧美一亚洲视频| 欧美亚洲成人网| 91网站免费观看| 亚洲999一在线观看www| 欧美性猛交xxxx黑人| 国产区精品在线观看| 日韩在线观看av| 欧美日韩在线视频首页| 日韩一区二区三区在线播放| 亚洲激情视频在线| 国产精品第2页| 九九久久精品一区| 91在线观看免费| 欧美中文在线观看| 91久久精品视频| 亚洲福利视频网| 国产精品久久久久久久美男| 久久精品国产一区二区三区| 亚洲色图50p| 欧美日韩一区免费| 色婷婷成人综合| 91久久综合亚洲鲁鲁五月天| 久久久久久av| 97久久伊人激情网| 成人免费高清完整版在线观看| 精品国产电影一区| 午夜精品美女自拍福到在线| 亚洲第一精品夜夜躁人人躁| 久久久久久久久久久免费| 亚洲男人天堂2019| 最新69国产成人精品视频免费| 中文字幕欧美日韩va免费视频| 国产婷婷成人久久av免费高清| 亚洲国产精品久久| 伊人久久久久久久久久久| 亚洲综合最新在线| 欧美激情第99页| 在线视频欧美日韩| 亚洲成av人乱码色午夜| 色与欲影视天天看综合网| 亚洲激情自拍图| 亚洲成人999| 成人久久久久爱|