觸摸事件一共有四種狀態
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent *)event;
//這個方法會在手指移動的過程中反復的被調用
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent *)event;
-(void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event;
ps:一個完整的觸摸事件必須至少包含開始和結束
觸摸對象的屬性
1> view 發生觸摸事件的view
2> window 發生觸摸事件的窗口
3> phase 相位屬性,用于自定義手勢
4> timestamp 發生觸摸的時間
//3和4在實際開發中用到的非常少通常用于自定義手勢
5> tapCount 發生觸摸時短時間內的連按次數
觸摸對象的常用方法:
1> locationInView:view view傳入某一個視圖 返回值是觸摸的點在該視圖上的位置
2> PReviousLocationInView: view 上一次點擊在某個視圖中的位置
3> UITouch *touch = [touches anyObject]; 在單點觸摸的處理中通常用此方法從touchues數組中返回touchu對象
多點觸摸的處理
首先需要設置視圖允許多點觸摸
[view setMultipleTouchEnabled:YES];
view為需要設置允許多點觸摸的視圖
在實際應用過程中
需要在處理時分別對touches這個集合中的每一個touch對象分別處理即可
因為touches是一個NSSet,所以造成了多點觸摸時取出的touch對象的順序沒辦法固定,但是在一次觸摸事件的過程中即該視圖沒有調用touchesEnded:方法和touchesCancelled:兩個方法之前touches里面的touch順序是不變的
示例代碼:
http://dl.vmall.com/c01at1z0hp
新聞熱點
疑難解答