生活随笔
收集整理的這篇文章主要介紹了
iOS中的手势操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄:六種手勢
輕擊手勢(TapGestureRecognizer)拖動手勢(PanGestureRecognizer)輕掃手勢 (SwipeGestureRecognizer)長按手勢(LongPressGestureRecognizer)捏合手勢(PinchGestureRecognizer)旋轉(zhuǎn)手勢(RotationGestureRecognizer)
一、輕擊手勢
使用方式
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];[self.view addGestureRecognizer:tap];
注意事項(xiàng)一:
父UIView,子UIButton:在父UIView上添加輕擊手勢
除了點(diǎn)擊按鈕無法響應(yīng)此事件之外,點(diǎn)擊其它處都可以響應(yīng)
如果把UIButton的userInteractionEnable設(shè)置NO,則點(diǎn)擊按鈕也可以響應(yīng)觸摸
結(jié)論:父View的tab和button的click不能同時觸發(fā)注意事項(xiàng)二:
父UIView,子UIButton:在UIButton上添加輕擊手勢
優(yōu)先響應(yīng)tap的點(diǎn)擊事件,無tap點(diǎn)擊事件時才會響應(yīng)clcik
設(shè)置userInteractionEnabled后,兩個事件都不會響應(yīng)注意事項(xiàng)三:
父UIView,子UIButton:在UIView和UIButton上添加輕擊手勢
響應(yīng)UIView的tap的點(diǎn)擊事件注意事項(xiàng)四:
子View是UITableView
無論是給父View還是給UITableView設(shè)置觸摸事件,都會造成didSelectRowAtIndexPath無法執(zhí)行
二、拖動手勢
使用方式
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];[self.view addGestureRecognizer:tap];UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)];gesture.delegate = self;[self.scrollView addGestureRecognizer:gesture];
//獲取偏移量
// 返回的是相對于最原始的手指的偏移量
CGPoint transP = [pan translationInView:self.imageView];//手勢滑動中
if (recognizer.state == UIGestureRecognizerStateBegan) { }
//手勢滑動中
if (recognizer.state == UIGestureRecognizerStateChanged) { }
//手勢結(jié)束
if (recognizer.state == UIGestureRecognizerStateEnded) { }if ([recognizer velocityInView:self.view].y < 0) {NSLog(@"向上");
} else {NSLog(@"向下");
}
UIGestureRecognizerStatePossible, // 識別器還沒有識別出它的手勢(狀態(tài))(Possible),但是可能計算觸摸事件。這是默認(rèn)狀態(tài)UIGestureRecognizerStateBegan, // 識別器已經(jīng)接收識別為此手勢(狀態(tài))的觸摸(Began)。在下一輪run循環(huán)中,響應(yīng)方法將會被調(diào)用。
UIGestureRecognizerStateChanged, // 識別器已經(jīng)接收到觸摸,并且識別為手勢改變(Changed)。在下一輪run循環(huán)中,響應(yīng)方法將會被調(diào)用。
UIGestureRecognizerStateEnded, // 識別器已經(jīng)接收到觸摸,并且識別為手勢結(jié)束(Ended)。在下一輪run循環(huán)中,響應(yīng)方法將會被調(diào)用并且識別器將會被重置到UIGestureRecognizerStatePossible狀態(tài)。
UIGestureRecognizerStateCancelled, // 識別器已經(jīng)接收到觸摸,這種觸摸導(dǎo)致手勢取消(Cancelled)。在下一輪run循環(huán)中,響應(yīng)方法將會被調(diào)用。識別器將會被重置到UIGestureRecognizerStatePossible狀態(tài)。UIGestureRecognizerStateFailed, // 識別器已經(jīng)接收到一個觸摸序列,不能識別為手勢(Failed)。響應(yīng)方法將不會被調(diào)用,并且識別器將會重置到UIGestureRecognizerStatePossible。// 離散手勢 - 手勢識別器識別一個離散事件,但是不會報告改變(例如,一個輕擊)不會過度到Began和Changed狀態(tài),并且不會失敗(fail)或者被取消(cancell)
UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded // 識別器接收觸摸,并且識別為此手勢。在下一輪run循環(huán)中,響應(yīng)方法將會被調(diào)用,并且識別將會重置至UIGestureRecognizerStatePossible。
總結(jié)
以上是生活随笔為你收集整理的iOS中的手势操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。