七大手勢

//UIGestureRecognizer手勢是一個抽象類(子類有用)

//手勢:點擊固逗,平移左权,捏合晨仑,輕掃褐墅,旋轉(zhuǎn),長按屏幕洪己,邊緣滑動

/*

1.創(chuàng)建手勢對象

2.綁定觸發(fā)手勢的范圍

3.實現(xiàn)觸發(fā)手勢是調(diào)用的方法

4.根據(jù)手勢的不同的狀態(tài)做出不同的操作

*/

/*

//1.點擊

//創(chuàng)建點擊手勢類的對象并綁定觸發(fā)方法

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];

//設(shè)置需要點擊幾次

tapGesture.numberOfTapsRequired = 2;

//設(shè)置需要幾根手指點擊

tapGesture.numberOfTouchesRequired = 2;

//給視圖添加手勢

[myView addGestureRecognizer:tapGesture];

*/

//點擊方法

- (void)tapGesture:(UITapGestureRecognizer *)gesture {

//獲取手勢綁定的視圖

UIView *view = gesture.view;

view.backgroundColor= [UIColorgreenColor];

}

/*

2.平移手勢

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];

[myView addGestureRecognizer:panGesture];

*/

//平移方法

- (void)panGesture:(UIPanGestureRecognizer*)gesture {

//判斷手勢狀態(tài)

switch(gesture.state) {

//開始

case UIGestureRecognizerStateBegan:

break;

//改變

case UIGestureRecognizerStateChanged:

{

UIView *view = gesture.view;

//偏移量

CGPoint offset = [gesture translationInView:view];

//移動位置

view.frame=CGRectOffset(view.frame, offset.x, offset.y);

//坐標(biāo)位置

[gestureset Translation:CGPointZeroinView:view];

}

break;

//結(jié)束

case UIGestureRecognizerStateEnded:

break;

default:

break;

}

}

/*

//3.捏合(縮放) 一般不使用捏合手勢妥凳,一般使用scrollView自帶的縮放功能

UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)];

[myView addGestureRecognizer:pinchGesture];

*/

//捏合方法

- (void)pinchGesture:(UIPinchGestureRecognizer *)gesture {

CGRect _rect;

switch(gesture.state) {

case UIGestureRecognizerStateBegan:

{

_rect = gesture.view.frame;

}

break;

case UIGestureRecognizerStateChanged:

{

//第一種方式

// ???????????CGFloat scale = gesture.scale;

// ???????????CGFloat dx = (1 - scale) * CGRectGetWidth(gesture.view.frame) / 2;

// ???????????CGFloat dy = (1 - scale) * CGRectGetHeight(gesture.view.frame) / 2;

// ???????????//以初始的frame進(jìn)行改變

// ???????????gesture.view.frame = CGRectInset(_rect, dx, dy);

//第二種方式

gesture.view.transform=CGAffineTransformScale(gesture.view.transform, gesture.scale, gesture.scale);

//每次都是比例為1

gesture.scale= 1;

}

break;

case UIGestureRecognizerStateEnded:

break;

default:

break;

}

}

/*

//4.輕掃

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];

//輕掃方向(上下左右)

swipeGesture.direction = UISwipeGestureRecognizerDirectionUp;

//如果需要四個方向的輕掃就創(chuàng)建四個手勢

[myView addGestureRecognizer:swipeGesture];

*/

//輕掃方法

- (void)swipeGesture:(UISwipeGestureRecognizer *)gesture {

switch(gesture.direction) {

caseUISwipeGestureRecognizerDirectionUp:

{

//獲取手勢綁定的視圖

UIView*view = gesture.view;

view.backgroundColor= [UIColor greenColor];

}

break;

default:

break;

}

}

/*

//5.旋轉(zhuǎn)

UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGesture:)];

[myView addGestureRecognizer:rotationGesture];

*/

//旋轉(zhuǎn)方法

- (void)rotationGesture:(UIRotationGestureRecognizer *)gesture {

switch(gesture.state) {

case UIGestureRecognizerStateBegan:

break;

case UIGestureRecognizerStateChanged:

{

gesture.view.transform=CGAffineTransformMakeRotation(gesture.rotation);

}

break;

case UIGestureRecognizerStateEnded:

{

//回到初始狀態(tài)默認(rèn)位置

gesture.view.transform=CGAffineTransformIdentity;

}

break;

default:

break;

}

}

/*

//6.長按

UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGresture:)];

//設(shè)置長按反應(yīng)時間

longPressGesture.minimumPressDuration = 1;

[myView addGestureRecognizer:longPressGesture];

*/

//長按方法

- (void)longPressGresture:(UILongPressGestureRecognizer *)gesture {

switch(gesture.state) {

case UIGestureRecognizerStateEnded:

NSLog(@"長按添加");

break;

default:

break;

}

//UIMenuController菜單控制器

//sharedMenuController單例類

UIMenuController *menuVC = [UIMenuController sharedMenuController];

//菜單項

UIMenuItem *itme1 = [[UIMenuItemalloc] initWithTitle:@"粘貼" action:@selector(item1Click)];

UIMenuItem *itme2 = [[UIMenuItemalloc] initWithTitle:@"復(fù)制" action:@selector(item2Click)];

menuVC.menuItems= @[itme1,itme2];

//出現(xiàn)位置

[menuVC setTargetRect:CGRectMake(gesture.view.center.x, gesture.view.center.y, 0, 0) inView:self.view];

//讓menuVC顯示出來

[menuVC setMenuVisible:YES animated:YES];

}

//如果想要UIMenuController顯示出來必須重寫下面的方法

- (BOOL)canBecomeFirstResponder {

return YES;

}

- (void)item1Click{

NSLog(@"粘貼");

}

- (void)item2Click{

NSLog(@"復(fù)制");

}

//7.屏幕邊緣滑動

UIScreenEdgePanGestureRecognizer *SEPGesture = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(screenEdgePanGesture:)];

//必須制定一個滑動邊緣

SEPGesture.edges=UIRectEdgeLeft;

[self.view addGestureRecognizer:SEPGesture];

//屏幕邊緣滑動方法

- (void)screenEdgePanGesture:(UIScreenEdgePanGestureRecognizer *)gesture {

switch(gesture.state) {

case UIGestureRecognizerStateEnded:

NSLog(@"滑動");

break;

default:

break;

}

}

#warning注意事項

//UIImageView添加手指之前需要設(shè)置userInteractionEnabled為YES

//TODO:這是錯誤

UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc]initWithTarget:selfaction:@selector(tap1:)];

[myView addGestureRecognizer:tap1];

UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(tap2:)];

[myView addGestureRecognizer:tap2];

//當(dāng)tap2執(zhí)行失敗時,才使用tap1答捕,避免崩潰

[tap1 requireGestureRecognizerToFail:tap2];

}

- (void)tap1:(UITapGestureRecognizer*)tap1 {

}

- (void)tap2:(UITapGestureRecognizer*)tap2 {

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逝钥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拱镐,更是在濱河造成了極大的恐慌艘款,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沃琅,死亡現(xiàn)場離奇詭異哗咆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)益眉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門晌柬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郭脂,你說我怎么就攤上這事年碘。” “怎么了展鸡?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵屿衅,是天一觀的道長。 經(jīng)常有香客問我娱颊,道長傲诵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任箱硕,我火速辦了婚禮拴竹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剧罩。我一直安慰自己栓拜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幕与,像睡著了一般挑势。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啦鸣,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天潮饱,我揣著相機(jī)與錄音,去河邊找鬼诫给。 笑死香拉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的中狂。 我是一名探鬼主播凫碌,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胃榕!你這毒婦竟也來了盛险?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勋又,失蹤者是張志新(化名)和其女友劉穎苦掘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赐写,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡鸟蜡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挺邀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揉忘。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖端铛,靈堂內(nèi)的尸體忽然破棺而出泣矛,到底是詐尸還是另有隱情,我是刑警寧澤禾蚕,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布您朽,位于F島的核電站,受9級特大地震影響换淆,放射性物質(zhì)發(fā)生泄漏粒没。R本人自食惡果不足惜柴底,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一获列、第九天 我趴在偏房一處隱蔽的房頂上張望绑蔫。 院中可真熱鬧,春花似錦县习、人聲如沸涮母。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叛本。三九已至沪蓬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間来候,已是汗流浹背跷叉。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留吠勘,地道東北人性芬。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像剧防,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辫樱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容