日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

IOS 手势识别

發(fā)布時(shí)間:2023/12/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS 手势识别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

六種手勢(shì)識(shí)別:輕擊手勢(shì)(TapGestureRecognizer),輕掃手勢(shì) (SwipeGestureRecognizer), 長(zhǎng)按手勢(shì)(LongPressGestureRecognizer), ?拖動(dòng)手勢(shì)(PanGestureRecognizer), 捏合手勢(shì)(PinchGestureRecognizer),旋轉(zhuǎn)手勢(shì)(RotationGestureRecognizer);

其實(shí)這些手勢(shì)用touche事件完全可以實(shí)現(xiàn),蘋果就是把常用的觸摸事件封裝成手勢(shì),來(lái)提供給用戶。讀者完全可以用TouchesMoved來(lái)寫拖動(dòng)手勢(shì)等

一,用storyboard給控件添加手勢(shì)識(shí)別

1.用storyboard添加手勢(shì)識(shí)別,和添加一個(gè)Button的步驟一樣,首先我們得找到相應(yīng)的手勢(shì),把手勢(shì)識(shí)別的控件拖到我們要添加手勢(shì)的控件中,截圖如下:

2.給我們拖出的手勢(shì)添加回調(diào)事件,和給Button回調(diào)事件沒(méi)啥區(qū)別的,在回調(diào)方法中添加要實(shí)現(xiàn)的業(yè)務(wù)邏輯即可,截圖如下:

?

二,純代碼添加手勢(shì)識(shí)別

用storyboard可以大大簡(jiǎn)化我們的操作,不過(guò)純代碼的方式還是要會(huì)的,就像要Dreamwear編輯網(wǎng)頁(yè)一樣(當(dāng)然啦,storyboard的拖拽功能要比Dreamwear的拖拽強(qiáng)大的多),用純代碼敲出來(lái)的更為靈活,更加便 于維護(hù)。不過(guò)用storyboard可以減少我們的工作量,這兩個(gè)要配合著使用才能大大的提高我們的開(kāi)發(fā)效率。個(gè)人感覺(jué)用storyboard把框架搭起 來(lái)(Controller間的關(guān)系),一下小的東西還是用純代碼敲出來(lái)更好一些。下面就給出如何給我們的控件用純代碼的方式來(lái)添加手勢(shì)識(shí)別。

1.輕擊手勢(shì)(TapGestureRecognizer)的添加

初始化代碼TapGestureRecongnizer的代碼如下:

1 2 3 4 5 6 //新建tap手勢(shì) ????UITapGestureRecognizer?*tapGesture?=?[[UITapGestureRecognizer?alloc]?initWithTarget:self?action:@selector(tapGesture:)]; ????//設(shè)置點(diǎn)擊次數(shù)和點(diǎn)擊手指數(shù) ????tapGesture.numberOfTapsRequired?=?1;?//點(diǎn)擊次數(shù) ????tapGesture.numberOfTouchesRequired?=?1;?//點(diǎn)擊手指數(shù) ????[self.view?addGestureRecognizer:tapGesture];

在回調(diào)方法中添加相應(yīng)的業(yè)務(wù)邏輯:

1 2 3 4 5 //輕擊手勢(shì)觸發(fā)方法 -(void)tapGesture:(id)sender { ????//輕擊后要做的事情???????? }

2.長(zhǎng)按手勢(shì)(LongPressGestureRecognizer)
初始化代碼:

1 2 3 4 5 //添加長(zhǎng)摁手勢(shì) ????UILongPressGestureRecognizer?*longPressGesture?=?[[UILongPressGestureRecognizer?alloc]?initWithTarget:self?action:@selector(longPressGesture:)]; ????//設(shè)置長(zhǎng)按時(shí)間 ????longPressGesture.minimumPressDuration?=?0.5;?//(2秒) ????[self.view?addGestureRecognizer:longPressGesture];

在對(duì)應(yīng)的回調(diào)方法中添加相應(yīng)的方法(當(dāng)手勢(shì)開(kāi)始時(shí)執(zhí)行):

1 2 3 4 5 6 7 8 9 10 //常摁手勢(shì)觸發(fā)方法 -(void)longPressGesture:(id)sender { ????UILongPressGestureRecognizer?*longPress?=?sender; ????if?(longPress.state?==?UIGestureRecognizerStateBegan) ????{ ????????UIAlertView?*alter?=?[[UIAlertView?alloc]?initWithTitle:@"提示"?message:@"長(zhǎng)按觸發(fā)"?delegate:nil?cancelButtonTitle:@"取消"?otherButtonTitles:?nil]; ????????[alter?show]; ????} }

代碼說(shuō)明:手勢(shì)的常用狀態(tài)如下

  • 開(kāi)始:UIGestureRecognizerStateBegan

  • 改變:UIGestureRecognizerStateChanged

  • 結(jié)束:UIGestureRecognizerStateEnded

  • 取消:UIGestureRecognizerStateCancelled

  • 失敗:UIGestureRecognizerStateFailed

3.輕掃手勢(shì)(SwipeGestureRecognizer)

在初始化輕掃手勢(shì)的時(shí)候得指定輕掃的方向,上下左右。 如果要要添加多個(gè)輕掃方向,就得添加多個(gè)輕掃手勢(shì),不過(guò)回調(diào)的是同一個(gè)方法。

添加輕掃手勢(shì),一個(gè)向左一個(gè)向右,代碼如下:

1 2 3 4 5 6 7 8 9 10 11 //添加輕掃手勢(shì) ????UISwipeGestureRecognizer?*swipeGesture?=?[[UISwipeGestureRecognizer?alloc]?initWithTarget:self?action:@selector(swipeGesture:)]; ????//設(shè)置輕掃的方向 ????swipeGesture.direction?=?UISwipeGestureRecognizerDirectionRight;?//默認(rèn)向右 ????[self.view?addGestureRecognizer:swipeGesture]; ????? ????//添加輕掃手勢(shì) ????UISwipeGestureRecognizer?*swipeGestureLeft?=?[[UISwipeGestureRecognizer?alloc]?initWithTarget:self?action:@selector(swipeGesture:)]; ????//設(shè)置輕掃的方向 ????swipeGestureLeft.direction?=?UISwipeGestureRecognizerDirectionLeft;?//默認(rèn)向右 ????[self.view?addGestureRecognizer:swipeGestureLeft];

回調(diào)方法如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 //輕掃手勢(shì)觸發(fā)方法 -(void)swipeGesture:(id)sender { ????UISwipeGestureRecognizer?*swipe?=?sender; ????if?(swipe.direction?==?UISwipeGestureRecognizerDirectionLeft) ????{ ????????//向左輕掃做的事情 ????} ????if?(swipe.direction?==?UISwipeGestureRecognizerDirectionRight) ????{ ????????//向右輕掃做的事情 ????} }

4.捏合手勢(shì)(PinchGestureRecognizer)

捏合手勢(shì)初始化

1 2 3 //添加捏合手勢(shì) UIPinchGestureRecognizer?*pinchGesture?=?[[UIPinchGestureRecognizer?alloc]?initWithTarget:self?action:@selector(pinchGesture:)]; [self.view?addGestureRecognizer:pinchGesture];

捏合手勢(shì)要觸發(fā)的方法(放大或者縮小圖片):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 捏合手勢(shì)觸發(fā)方法 -(void)?pinchGesture:(id)sender { ?????UIPinchGestureRecognizer?*gesture?=?sender; ????? ????//手勢(shì)改變時(shí) ????if?(gesture.state?==?UIGestureRecognizerStateChanged) ????{ ????????//捏合手勢(shì)中scale屬性記錄的縮放比例 ????????_imageView.transform?=?CGAffineTransformMakeScale(gesture.scale,?gesture.scale); ????} ????? ????//結(jié)束后恢復(fù) ????if(gesture.state==UIGestureRecognizerStateEnded) ????{ ????????[UIView?animateWithDuration:0.5?animations:^{ ????????????_imageView.transform?=?CGAffineTransformIdentity;//取消一切形變 ????????}]; ????} }

5.拖動(dòng)手勢(shì)(PanGestureRecognizer)

拖動(dòng)手勢(shì)的初始化

1 2 3 //添加拖動(dòng)手勢(shì) UIPanGestureRecognizer?*panGesture?=?[[UIPanGestureRecognizer?alloc]?initWithTarget:self?action:@selector(panGesture:)]; [self.view?addGestureRecognizer:panGesture];

拖動(dòng)手勢(shì)要做的方法(通過(guò)translationInView獲取移動(dòng)的點(diǎn),和TouchesMoved方法類似)

1 2 3 4 5 6 7 8 9 //拖動(dòng)手勢(shì) -(void)?panGesture:(id)sender { ????UIPanGestureRecognizer?*panGesture?=?sender; ????? ????CGPoint?movePoint?=?[panGesture?translationInView:self.view]; ????? ????//做你想做的事兒 }

6.旋轉(zhuǎn)手勢(shì)(RotationGestureRecognizer)

旋轉(zhuǎn)手勢(shì)的初始化

1 2 3 //添加旋轉(zhuǎn)手勢(shì) UIRotationGestureRecognizer?*rotationGesture?=?[[UIRotationGestureRecognizer?alloc]?initWithTarget:self?action:@selector(rotationGesture:)]; [self.view?addGestureRecognizer:rotationGesture];

旋轉(zhuǎn)手勢(shì)調(diào)用的方法:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //旋轉(zhuǎn)手勢(shì) -(void)rotationGesture:(id)sender { ????? ????UIRotationGestureRecognizer?*gesture?=?sender; ????? ????if?(gesture.state==UIGestureRecognizerStateChanged) ????{ ????????_imageView.transform=CGAffineTransformMakeRotation(gesture.rotation); ????} ????? ????if(gesture.state==UIGestureRecognizerStateEnded) ????{ ????????? ????????[UIView?animateWithDuration:1?animations:^{ ????????????_imageView.transform=CGAffineTransformIdentity;//取消形變 ????????}]; ????} ????? }

上面的東西沒(méi)有多高深的技術(shù),就是對(duì)iOS開(kāi)發(fā)中的手勢(shì)做了一下小小的總結(jié),溫故一下基礎(chǔ)知識(shí)。在之前的博客中也有用到手勢(shì)識(shí)別的內(nèi)容,就是沒(méi)有系統(tǒng)的梳理一下手勢(shì)識(shí)別的知識(shí),本文做一個(gè)基礎(chǔ)的補(bǔ)充吧。


轉(zhuǎn)自:http://www.cocoachina.com/ios/20140922/9711.html

總結(jié)

以上是生活随笔為你收集整理的IOS 手势识别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。