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