IOS事件傳遞

在用戶使用app的過程中 會產(chǎn)生各種各樣的事件 大致可以分為3個類型

1,觸摸事件//如 點(diǎn)擊屏幕 拖拽....

2,加速計事件//如 搖一搖

3,遠(yuǎn)程控制事件//如 遙控器遠(yuǎn)程操作

在IOS中 不是任何對象都能處理事件的 ?只有繼承了 UIResponder的對象 才能接受并處理事件

UIApplication,UIViewController,UIView 都是繼承自 UIResponder 因此它們都是響應(yīng)者對象 ?都能夠接受并處理事件

無法進(jìn)行交互的情況

控件的透明度 在 0~0.01之間是無法接受交互的

控件的userInteractionEnable = NO 是無法進(jìn)行交互的

控件超出父控件的部分是無法接收交互的 ?即使設(shè)置clipToBounds=YES 能看見 也無法進(jìn)行交互

控件的hidden = YES 是無法進(jìn)行交互的

事件傳遞: ?就是當(dāng)產(chǎn)生交互事件時 ?查到到最適合處理事件的對象

1, ?當(dāng)事件產(chǎn)生時 ?主循環(huán)捕獲事件 ? 接下來進(jìn)行查找 尋找最適合處理事件的對象(即第一響應(yīng)者)

2,查找順序: ?UIApplication?—> UIWindow?—> rootViewController?—> UIView

在UIView中 會遍歷 它的子View 查看其是否適合 處理事件

在遍歷的時候 是按照該其 子View數(shù)組的 倒序來進(jìn)行遍歷//也就是從 顯示在最上面的開始遍歷

觸摸事件實(shí)際查找時會調(diào)用下面的方法

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent*)event;

//判斷該觸摸事件的 觸摸坐標(biāo) 是否在當(dāng)前的View上 ? 若在 則返回YES

-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event;

// 當(dāng)事件產(chǎn)生 時 會調(diào)用該方法

hitTest: withEvent: 方法內(nèi)部邏輯參考

請多多指正

hitTest: withEvent: 方法的活用

當(dāng) 我們不希望 第一響應(yīng)者 和 觸摸對象 一一對應(yīng)時//如 希望一個view的超出 父view的部分 可以響應(yīng)觸摸

則可以在 其父view的父view中 重寫hitTest方法 當(dāng)觸摸點(diǎn)在某個范圍時 則返回該view作為第一響應(yīng)者

//注意 在實(shí)現(xiàn)時 注意要選用統(tǒng)一的坐標(biāo)系

響應(yīng)者鏈條

若 事件傳遞完成 ?則找到了最佳的事件處理對象 ——> 成為 第一響應(yīng)者

當(dāng)?shù)谝豁憫?yīng)者 無法響應(yīng)事件 ?則會交給下一響應(yīng)者(nextResponder)來處理 若其無法處理 會在下一個NextResponder中尋找

若知道UIApplication時 都無法響應(yīng) 則丟棄該事件

view 的nextResponder的選擇: ?若有控制器 管理該控件 則nextResponder為其控制器 ——>父View

若無控制器 管理該對象 則nextResponder 為其父View

其他的nextResponder選擇

RootViewController?—> UIWindow?—> UIApplication?—> nil

在響應(yīng)鏈 中 無論這個第一響應(yīng)者 是否對這個事件 進(jìn)行了處理 都會響應(yīng)到 UIApplication ?如果想要中斷響應(yīng)鏈 ?則在 重寫的Touch方法中 不調(diào)用其父類方法


簡書用的不熟練 排版有些難看 歡迎大家多多指正 共同學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末往枣,一起剝皮案震驚了整個濱河市枪眉,隨后出現(xiàn)的幾起案子孵稽,更是在濱河造成了極大的恐慌,老刑警劉巖攀例,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劳较,死亡現(xiàn)場離奇詭異谱净,居然都是意外死亡榨惰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門垢油,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盆驹,“玉大人,你說我怎么就攤上這事滩愁∏” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵硝枉,是天一觀的道長廉丽。 經(jīng)常有香客問我倦微,道長,這世上最難降的妖魔是什么正压? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任欣福,我火速辦了婚禮,結(jié)果婚禮上蔑匣,老公的妹妹穿的比我還像新娘劣欢。我一直安慰自己棕诵,他們只是感情好裁良,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著校套,像睡著了一般价脾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笛匙,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天侨把,我揣著相機(jī)與錄音,去河邊找鬼妹孙。 笑死秋柄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蠢正。 我是一名探鬼主播骇笔,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嚣崭!你這毒婦竟也來了笨触?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雹舀,失蹤者是張志新(化名)和其女友劉穎芦劣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體说榆,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡虚吟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了签财。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片串慰。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荠卷,靈堂內(nèi)的尸體忽然破棺而出模庐,到底是詐尸還是另有隱情,我是刑警寧澤油宜,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布掂碱,位于F島的核電站怜姿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏疼燥。R本人自食惡果不足惜沧卢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醉者。 院中可真熱鬧但狭,春花似錦、人聲如沸撬即。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剥槐。三九已至唱歧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粒竖,已是汗流浹背颅崩。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕊苗,地道東北人沿后。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像朽砰,于是被迫代替她去往敵國和親尖滚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本次筆記主要是整理一下關(guān)于 iOS 中關(guān)于事件傳遞和響應(yīng)機(jī)制锅移,參考了一些其他資料加上自己的理解熔掺。 事件 Event...
    varlarzh閱讀 329評論 0 2
  • 本篇主要講解iOS事件傳遞的整個過程,大部分內(nèi)容翻譯自Apple Developer Guide非剃,原文鏈接 當(dāng)一個...
    Little_Mango閱讀 1,275評論 4 10
  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的置逻?困惑于Cell怎么突然不能點(diǎn)擊了?糾結(jié)于如何實(shí)現(xiàn)這個奇葩響應(yīng)需求备绽?亦或是...
    Lotheve閱讀 57,165評論 51 599
  • 在iOS開發(fā)中經(jīng)常會涉及到觸摸事件券坞。本想自己總結(jié)一下,但是遇到了這篇文章肺素,感覺總結(jié)的已經(jīng)很到位恨锚,特此轉(zhuǎn)載。作者:L...
    WQ_UESTC閱讀 6,012評論 4 26
  • 用戶以多種方式操縱他們的iOS設(shè)備倍靡,例如觸摸屏幕或搖動設(shè)備猴伶。 iOS會解釋用戶何時以及如何操作硬件并將此信息傳遞到...
    坤坤同學(xué)閱讀 3,997評論 7 19