08-手勢(shì)識(shí)別(點(diǎn)按,長(zhǎng)按,輕掃)

Make by:弓_雖_子

通過touches方法監(jiān)聽view觸摸事件的缺點(diǎn)?

1.必須得自定義view,在自定義的View當(dāng)中去實(shí)現(xiàn)touches方法.

2.由于是在view內(nèi)部的touches方法中監(jiān)聽觸摸事件,因此默認(rèn)情況下,無法讓其他外界對(duì)象監(jiān)聽view的觸摸事件

3.不容易區(qū)分用戶的具體手勢(shì)行為(不容易區(qū)分是長(zhǎng)按手勢(shì),還是縮放手勢(shì))這些等.

iOS 3.2之后,蘋果推出了手勢(shì)識(shí)別功能(Gesture Recognizer在觸摸事件處理方面大大簡(jiǎn)化了開發(fā)者的開發(fā)難度

UIGestureRecognizer手勢(shì)識(shí)別器

利用UIGestureRecognizer,能輕松識(shí)別用戶在某個(gè)view上面做的一些常見手勢(shì)

UIGestureRecognizer是一個(gè)抽象類,定義了所有手勢(shì)的基本行為,使用它的子類才能處理具體的手勢(shì)

手勢(shì)使用方法

1.創(chuàng)建手勢(shì)

2.添加手勢(shì)

3.實(shí)現(xiàn)手勢(shì)方法

添加點(diǎn)按手勢(shì)

UITapGestureRecognizer*tap= [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tap)];

手勢(shì)也可以設(shè)置代理

tap.delegate=self;

添加手勢(shì)

[self.imageVaddGestureRecognizer:tap];

代理方法:

是否允許接收手指

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch*)touch{

讓圖片的左邊不可以點(diǎn)擊,

獲取當(dāng)前手指所在的點(diǎn).是在圖片的左邊還是在圖片的右邊.

CGPointcurP = [touchlocationInView:self.imageV];

if(curP.x>self.imageV.bounds.size.width*0.5) {

在圖片的右側(cè)

returnYES;

}else{

在圖片的左側(cè)

returnNO;

}

returnYES;

}

添加長(zhǎng)按手勢(shì)

UILongPressGestureRecognizer*longP = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longP:)];

[self.imageVaddGestureRecognizer:longP];

當(dāng)長(zhǎng)按時(shí)調(diào)用.

這個(gè)方法會(huì)調(diào)用很多次,當(dāng)手指長(zhǎng)按在上面不松,來回移動(dòng)時(shí),會(huì)持續(xù)調(diào)用.

所以要判斷它的狀態(tài).

- (void)longP:(UILongPressGestureRecognizer*)longP{

if(longP.state==UIGestureRecognizerStateBegan){

NSLog(@"開始長(zhǎng)按");

}elseif(longP.state==UIGestureRecognizerStateChanged){

NSLog(@"長(zhǎng)按時(shí)手指移動(dòng)");

}elseif(longP.state==UIGestureRecognizerStateEnded){

NSLog(@"手指離開屏幕");

}

}

添加輕掃手勢(shì)

UISwipeGestureRecognizer*swipe = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipe:)];

輕掃手勢(shì)默認(rèn)是向右邊稱輕掃

可以設(shè)置輕掃的方法.

一個(gè)輕掃手勢(shì)只能設(shè)置一個(gè)方法的輕掃.想要讓它有多個(gè)方向的手勢(shì),必須得要設(shè)置的

swipe.direction=UISwipeGestureRecognizerDirectionLeft;

[self.imageVaddGestureRecognizer:swipe];

添加輕掃手勢(shì)

UISwipeGestureRecognizer*swipe2 = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipe:)];

輕掃手勢(shì)默認(rèn)是向右邊稱輕掃

可以設(shè)置輕掃的方法.

一個(gè)輕掃手勢(shì)只能設(shè)置一個(gè)方法的輕掃.想要讓它有多個(gè)方向的手勢(shì),必須得要設(shè)置的

swipe2.direction=UISwipeGestureRecognizerDirectionUp;

[self.imageVaddGestureRecognizer:swipe2];

- (void)swipe:(UISwipeGestureRecognizer*)swipe{

判斷的輕掃的方向

if(swipe.direction==UISwipeGestureRecognizerDirectionLeft) {

NSLog(@"向左輕掃");

}elseif(swipe.direction==UISwipeGestureRecognizerDirectionUp){

NSLog(@"向上輕掃");

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容