《iOS開發筆記 事件與手勢》

2021-07-22 11:30:11 字數 1992 閱讀 5520

ios事件

觸控事件、運動事件、

一、觸控事件
/*
一、事件分發處理【由外到內】尋找流程如下:在頂級檢視(keywindow的檢視)上呼叫pointinside:withevent:方法判斷觸控點是否在當前檢視內;

如果返回no,那麼keywindow的hittest:withevent:返回nil;

如果返回yes,那麼它會向當前檢視的所有子檢視傳送hittest:withevent:訊息,遍歷所有子檢視的順序是從subviews陣列的末尾向前遍歷(從介面最上方開始向下遍歷);

如果有subview的hittest:withevent:返回非空物件,則keywindow的hittest:withevent:返回此物件,處理結束;

如果所有subview遍歷結束仍然沒有返回非空物件,則keywindow的hittest:withevent:返回頂級檢視;

二、響應者鏈條【由內到外】

找到被觸控的檢視物件後,還需要判斷該檢視物件是否能處理該觸控事件,如果不能處理,又該讓誰來處理,於是響應者鏈條出現,作用是 找到事件響應者

響應者鏈條圖示

響應者鏈條原則:

觸控物件initalview無法響應事件時,傳遞給上級檢視superview去響應

如果上級檢視無法響應,繼續往上傳遞

往上傳遞直到傳遞到檢視控制器的根檢視controllerview,如果根檢視不響應,傳遞給檢視控制器viewcontroller

檢視控制器不響應,傳遞給父檢視控制器的根檢視supercontrollerview,如果根檢視不響應,傳遞給父檢視控制器superviewcontroller

頂級檢視控制器不能響應,傳遞給主視窗keywindow

三、繼承uiresponder

以上 事件分發 和 響應者鏈條 ,都不需要我們關心,這些操作是自動執行的,不需要我們去操作,我們只需要了解它們的原理就行。

繼承 uiresponder 的物件,不能處理事件的情況:

userinteractionenabled = no;

hidden = yes;

alpha = 0 ~ 0.01;

沒有實現touchesbegan:withevent方法

重寫uiresponder 觸控響應方法:

#pragma mark 觸控開始時會呼叫

- (void)touchesbegan:(nsset *)touches withevent:(uievent *)event;

#pragma mark 觸控移動時會頻繁呼叫

- (void)touchesmoved:(nsset *)touches withevent:(uievent *)event;

#pragma mark 觸控結束離開螢幕時會呼叫

- (void)touchesended:(nsset *)touches withevent:(uievent *)event;

#pragma mark 觸控意外取消時會呼叫,比如觸控時**打進來

- (void)touchescancelled:(nsset *)touches withevent:(uievent *)event;

四、uitouch物件

在 uiresponder 觸控響應方法中,需要獲取 uitouch 物件:

//取得乙個觸控物件(對於多點觸控可能有多個物件)

uitouch *touch = [touches anyobject];

//取得在指定檢視的觸控位置

cgpoint current = [touch locationinview:self.view];

//取得在指定檢視的前乙個觸控位置

cgpoint previous = [touch previouslocationinview:self.view];

iOS觸控事件與手勢

觸控事件與手勢 1.觸控事件的處理方式 在ios上,事件的形式 觸控事件 multitouch events 運動事件 accelerometer events 遠端控制事件 remote control events 事件處理的方法 觸控開始 當乙個或多個手指觸碰螢幕時 void touchesb...

iOS開發筆記

1.預設快取策略下 useprotocolcachepolicy 對於靜態資源的訪問,請求頭會自動帶上 if none match if modified since 快取方面,響應頭帶有 last modified etag 兩個字段 儘管charles抓包結果為304,但是 urlsession...

iOS開發 觸控與手勢

在ios裝置中我們必不可少的操作便是在螢幕上觸控動作和相應的手勢動作,那麼你的觸控和手勢是如何被ios裝置所識別並且做出相應響應的呢,接下來編者將 其中的奧秘。響應過程 事件被交給第一響應物件處理,如果第乙個響應者不處理,事件被沿著響應者鏈向上傳遞,交給下乙個響應者,如果下乙個響應者不處理,繼續傳遞...