1. 觸摸操作的生命周期
-
手指觸摸屏幕的瞬間
在這個(gè)過(guò)程中,可以通過(guò) touch.tapCount 判斷是單擊還是雙擊。
可以通過(guò) [touch locationInView:self.view] 來(lái)獲取點(diǎn)擊位置坐標(biāo)
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #008400}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}span.s1 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s4 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s5 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s6 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s7 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures}span.s8 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #000000}span.s9 {font-variant-ligatures: no-common-ligatures; color: #272ad8}span.s10 {font-variant-ligatures: no-common-ligatures; color: #d12f1b}span.s11 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures; color: #d12f1b}span.s12 {font-variant-ligatures: no-common-ligatures; color: #4f8187}
//當(dāng)點(diǎn)擊屏幕開始的瞬間,調(diào)用此函數(shù),即狀態(tài)1
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"手指觸碰瞬間");
//獲取點(diǎn)擊對(duì)象。anyObeject獲取任何一個(gè)點(diǎn)擊對(duì)象
//一般只有一個(gè)點(diǎn)擊對(duì)象
UITouch* touch=[touches anyObject];
//記錄點(diǎn)擊的次數(shù)
if(touch.tapCount==1)
NSLog(@"單次點(diǎn)擊");
else if (touch.tapCount==2)
NSLog(@"雙擊");
}
-
手指在屏幕上未離開過(guò)程
在這個(gè)過(guò)程中可以通過(guò) [touch locationInView: ]來(lái)獲取手指相對(duì)于當(dāng)前視圖的坐標(biāo)。
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #d12f1b}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #008400}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s3 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s4 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #000000}span.s5 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s6 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s7 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"手指在屏幕上, 并且移動(dòng)。可以獲取坐標(biāo)數(shù)據(jù)");
//獲取手指相對(duì)當(dāng)前視圖的坐標(biāo)
UITouch* touch=[touches anyObject];
CGPoint pt=[touch locationInView:self.view];
- 手指離開屏幕的瞬間
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s3 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s4 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s5 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s6 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"手指離開屏幕");
}
- 還有一個(gè)特殊情況下終止觸屏操作的協(xié)議,比如游戲過(guò)程中來(lái)電話
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s3 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s4 {font-variant-ligatures: no-common-ligatures; color: #000000}span.s5 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s6 {font: 11.0px 'Heiti SC Light'; font-variant-ligatures: no-common-ligatures}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"特殊情況下終端觸屏.比如電話");
}
2.實(shí)現(xiàn)手指拖拽控制圖片移動(dòng)的功能
手指移動(dòng)的偏移量決定圖片移動(dòng)的向量,所以需要計(jì)算此時(shí)手指坐標(biāo)和上一時(shí)刻手指坐標(biāo)的差值。
在ViewController.h中聲明一個(gè)CGPoint,用來(lái)存放上一時(shí)刻手指位置:
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}span.s1 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s2 {font-variant-ligatures: no-common-ligatures}
CGPoint _mPtList;
然后獲得此時(shí)手指位置并計(jì)算偏移量大小:
注意 計(jì)算完要把此時(shí)的位置賦給 _mPtList
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px 'Heiti SC Light'; color: #008400}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #4f8187}span.s1 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures; color: #000000}span.s2 {font: 11.0px Menlo; font-variant-ligatures: no-common-ligatures}span.s3 {font-variant-ligatures: no-common-ligatures}span.s4 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s5 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s6 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s7 {font-variant-ligatures: no-common-ligatures; color: #4f8187}span.s8 {font-variant-ligatures: no-common-ligatures; color: #000000}
//獲取手指相對(duì)當(dāng)前視圖的坐標(biāo)
UITouch* touch=[touches anyObject];
CGPoint pt=[touch locationInView:self.view];
//每次移動(dòng)偏移量大小
float xOffset=pt.x-_mPtList.x;
float yOffset=pt.y-_mPtList.y;
_mPtList=pt;
然后根據(jù)偏移量改變圖像視圖的位置:
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px}span.s1 {font-variant-ligatures: no-common-ligatures}span.s2 {font-variant-ligatures: no-common-ligatures; color: #703daa}span.s3 {font-variant-ligatures: no-common-ligatures; color: #bb2ca2}span.s4 {font-variant-ligatures: no-common-ligatures; color: #3d1d81}span.s5 {font-variant-ligatures: no-common-ligatures; color: #272ad8}span.s6 {font-variant-ligatures: no-common-ligatures; color: #d12f1b}
UIImageView* iView=[self.view viewWithTag:101];
NSLog(@"x=%f,y=%f",pt.x,pt.y);
iView.frame=CGRectMake(iView.frame.origin.x+xOffset, iView.frame.origin.y+yOffset, iView.frame.size.width, iView.frame.size.height);