一、iOS事件:
1.事件:事件就是當(dāng)你在手機(jī)上點(diǎn)擊手機(jī)屏幕、滑動(dòng)手機(jī)翻面、搖動(dòng)手機(jī)的時(shí)候,手機(jī)做出一些反應(yīng),對(duì)應(yīng)的在應(yīng)用程序里實(shí)現(xiàn)了某些代碼的某些功能,完成這個(gè)過程就是一個(gè)事件。
2.iOS事件類型:
?。?)觸摸事件,比如點(diǎn)擊照片放大、點(diǎn)擊按鈕等。
(2)運(yùn)動(dòng)事件,比如微信搖一搖,就是一個(gè)很典型的運(yùn)動(dòng)事件,通過手機(jī)的運(yùn)動(dòng),實(shí)現(xiàn)某些功能。
?。?)遠(yuǎn)程控制事件,這個(gè)我也不知道舉什么例子。

二、觸摸事件
1.觸摸事件的處理方法:
復(fù)寫以下方法,監(jiān)聽觸摸事件。
**

2.UITouch觸摸對(duì)象
?。?)先來看觸摸事件會(huì)包含哪些信息:window:觸摸產(chǎn)生所在的窗口、view:觸摸產(chǎn)生所處的視圖、tapCount觸摸是單擊還是雙擊或者更多、phase觸摸事件在屏幕上有一個(gè)周期,即觸摸開始、觸摸點(diǎn)移動(dòng)、觸摸結(jié)束、還有中途取消。通過phase可以查看當(dāng)前觸摸時(shí)間在一個(gè)周期中所處的狀態(tài)。phase是UITouchPhase類型的,它是一個(gè)枚舉:
· UITouchPhaseBegan
· UITouchPhaseMoved
· UITouchPhaseStationary
· UITouchPhaseEnded
window、view、tapCount、phase都是UITouch類中常用屬性,也就是說建立一個(gè)UITouch對(duì)象就可以用這些屬性來看觸摸事件包含的信息。
?。?)

?。?)實(shí)例代碼:新建一個(gè)工程,在ViewController中寫如下方法
-(void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event{
//UITouch類中有已經(jīng)建立了很多UITouch對(duì)象,只需要從中取出來即可,不用重復(fù)創(chuàng)建,所以此處不用alloc,用一個(gè)UITouch的對(duì)象touch接收就行了。anyObject是從類里面任意取出來一個(gè)。
UITouch * touch=[UITouch anyObject];取出一個(gè)觸摸點(diǎn)。
NSLog(@"%@",touch.window)//打印下touch的window屬性。
NSLog(@"%@", touch.view);//打印下當(dāng)前觸摸的view。
NSLog(@"tapCount:%ld", touch.tapCount);//打印點(diǎn)擊次數(shù)。
NSLog(@"phase: %ld", touch.phase);//當(dāng)前狀態(tài)。
//下面寫一個(gè)switch,根據(jù)點(diǎn)擊次數(shù),實(shí)現(xiàn)不同的功能,具體代碼就不實(shí)現(xiàn)了。
switch (touch.tapCount) {
** case 1:
break;
** case 2:**
** break;**
** case 3:**
** default:**
** break;**
}
}
** (4)UITouch類中常用方法 **
既然是類中的常用方法,那么,是實(shí)例方法的話,我們創(chuàng)建一個(gè)UITouch對(duì)象就可以調(diào)用,是類方法的話,我們直接用類名,即[UITouch ];可以調(diào)用。

例如在(3)中我們可以用取出來的對(duì)象調(diào)用這兩個(gè)方法。
CGPoint point =[touch locationInView:touch.view];//調(diào)用這個(gè)方法可以獲得點(diǎn)擊時(shí)候的位置,用一個(gè)CGPoint類型的變量接收就可以得到一個(gè)點(diǎn)。
至于如何打印出這個(gè)點(diǎn),我也不知道,如果你知道還望告知,謝謝。
?。?)touch事件的傳遞

那么上圖中的UIGestureRecognizer又是什么呢?還有什么是第一響應(yīng)者?下篇博客有詳細(xì)說明。
摘自文檔:
