一、iOS事件:
1.事件:事件就是當你在手機上點擊手機屏幕、滑動手機翻面、搖動手機的時候,手機做出一些反應,對應的在應用程序里實現(xiàn)了某些代碼的某些功能,完成這個過程就是一個事件。
2.iOS事件類型:
(1)觸摸事件,比如點擊照片放大、點擊按鈕等。
(2)運動事件,比如微信搖一搖,就是一個很典型的運動事件,通過手機的運動,實現(xiàn)某些功能。
(3)遠程控制事件,這個我也不知道舉什么例子。
二、觸摸事件
1.觸摸事件的處理方法:
復寫以下方法,監(jiān)聽觸摸事件。
**
2.UITouch觸摸對象
(1)先來看觸摸事件會包含哪些信息:window:觸摸產(chǎn)生所在的窗口、view:觸摸產(chǎn)生所處的視圖、tapCount觸摸是單擊還是雙擊或者更多、phase觸摸事件在屏幕上有一個周期,即觸摸開始、觸摸點移動、觸摸結(jié)束、還有中途取消。通過phase可以查看當前觸摸時間在一個周期中所處的狀態(tài)。phase是UITouchPhase類型的,它是一個枚舉:
· UITouchPhaseBegan
· UITouchPhaseMoved
· UITouchPhaseStationary
· UITouchPhaseEnded
window、view、tapCount、phase都是UITouch類中常用屬性,也就是說建立一個UITouch對象就可以用這些屬性來看觸摸事件包含的信息。
(2)
(3)實例代碼:新建一個工程,在ViewController中寫如下方法
-(void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event{
//UITouch類中有已經(jīng)建立了很多UITouch對象,只需要從中取出來即可,不用重復創(chuàng)建,所以此處不用alloc,用一個UITouch的對象touch接收就行了。anyObject是從類里面任意取出來一個。
UITouch * touch=[UITouch anyObject];取出一個觸摸點。
NSLog(@"%@",touch.window)//打印下touch的window屬性。
NSLog(@"%@", touch.view);//打印下當前觸摸的view。
NSLog(@"tapCount:%ld", touch.tapCount);//打印點擊次數(shù)。
NSLog(@"phase: %ld", touch.phase);//當前狀態(tài)。
//下面寫一個switch,根據(jù)點擊次數(shù),實現(xiàn)不同的功能,具體代碼就不實現(xiàn)了。
switch (touch.tapCount) {
** case 1:
break;
** case 2:**
** break;**
** case 3:**
** default:**
** break;**
}
}
** (4)UITouch類中常用方法 **
既然是類中的常用方法,那么,是實例方法的話,我們創(chuàng)建一個UITouch對象就可以調(diào)用,是類方法的話,我們直接用類名,即[UITouch ];可以調(diào)用。
例如在(3)中我們可以用取出來的對象調(diào)用這兩個方法。
CGPoint point =[touch locationInView:touch.view];//調(diào)用這個方法可以獲得點擊時候的位置,用一個CGPoint類型的變量接收就可以得到一個點。
至于如何打印出這個點,我也不知道,如果你知道還望告知,謝謝。
(5)touch事件的傳遞
那么上圖中的UIGestureRecognizer又是什么呢?還有什么是第一響應者?下篇博客有詳細說明。
摘自文檔: