ios觸摸事件

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ios觸摸事件 ? ? ? ??

一、前言

在App開(kāi)發(fā)過(guò)程中,需要利用手勢(shì)去實(shí)現(xiàn)一些功能或者效果俊卤。UIKit框架提供了檢測(cè)常見(jiàn)手勢(shì)的預(yù)定義手勢(shì)識(shí)別器搭盾。在手勢(shì)開(kāi)發(fā)上,最好使用預(yù)定義的手勢(shì)識(shí)別器,因?yàn)樗鼈兊暮?jiǎn)單性減少了我們的代碼量。當(dāng)然,我們也可以自定義一些特殊的手勢(shì)急波,具體的可以查看官方文檔。ios中事件可以分為3大類型:觸摸事件瘪校、加速器事件澄暮、遠(yuǎn)程控制事件,如下圖所示:

二、UIResponder

在ios中不是任何對(duì)象都能處理事件,只要繼承了UIResponder的對(duì)象才能接收并處理事件渣淤。我們稱之為"響應(yīng)者對(duì)象",UIApplication,UIController,UIView都繼承自UIResponder,因此它們都是響應(yīng)者對(duì)象赏寇,都能接收并處理事件。

UIResponder提供了以下方法來(lái)處理事件:

三价认、UITouch

當(dāng)用戶一根手指頭觸摸到屏幕時(shí),會(huì)創(chuàng)建一個(gè)與手指相關(guān)的UITouch對(duì)象,一根手指對(duì)應(yīng)一個(gè)UITouch對(duì)象嗅定。

UITouch保存著與手指相關(guān)的信息, 比如觸摸的位置,時(shí)間,階段:

(1)當(dāng)手指移動(dòng)的時(shí)候,系統(tǒng)會(huì)更新同一個(gè)UITouch對(duì)象,使之能一直保存該手指在的觸摸位置。

(2)當(dāng)手指離開(kāi)屏幕的時(shí)候,系統(tǒng)會(huì)銷毀相應(yīng)的UITouch對(duì)象用踩。


UITouch的屬性:

其中,UITouchPhase是一個(gè)枚舉類型渠退、包括:

UITouch的方法:

四:UIEvent

每產(chǎn)生一個(gè)事件,就會(huì)產(chǎn)生一個(gè)UIEvent對(duì)象,記錄事件產(chǎn)生的時(shí)刻和類型脐彩。

UIEvent屬性:

五:事件的產(chǎn)生和傳遞

發(fā)生觸摸事件后,系統(tǒng)會(huì)將事件加入到一個(gè)由UIApplication管理的事件隊(duì)列中,UIApplication會(huì)從事件隊(duì)列中取出最前面的事件,并將事件分發(fā)下去以便處理碎乃。通常,先發(fā)送事件給程序的主窗口(keywindow),主窗口會(huì)在視圖層級(jí)中找到一個(gè)最合適的視圖來(lái)處理觸摸事件,也就是說(shuō)keywindow最先收到觸摸事件。找到合適的視圖后,就會(huì)調(diào)用視圖控件的touches方法來(lái)做具體的事件處理:

touchesBegan…

touchesMoved…

touchedEnded…

這些touches方法的默認(rèn)做法是將事件順著響應(yīng)者鏈條向上傳遞,將事件傳給上一個(gè)響應(yīng)者進(jìn)行處理惠奸。示例如下:

觸摸事件的傳遞是從父控件傳遞到子控件的:

(1)點(diǎn)擊了綠色的view

UIApplication-->UIWindow-->白色-->綠色

(2)點(diǎn)擊了藍(lán)色的view

UIApplication-->UIWindow-->白色-->橙色-->藍(lán)色

(3)點(diǎn)擊了黃色的view

UIApplication-->UIWidow-->白色-->橙色-->藍(lán)色-->黃色

注意:如果父視圖不能接收觸摸事件,那么子視圖就不可能接收觸摸事件梅誓。


UIView不接收觸摸事件的三種情況:

(1)不接收用戶交互

userInteractionEnabled = NO

(2)隱藏

hidden = YES

(3)透明

alpha = 0.0~0.01


六:響應(yīng)者鏈條

響應(yīng)者鏈條示意圖:

(1)如果view的控制器存在,就傳遞給控制器;如果控制器的view不存在,則將其傳遞給它的父視圖。

(2)在視圖層次結(jié)構(gòu)的最頂級(jí)視圖,如果不能處理接收的事件,那么會(huì)將事件傳遞給Window處理梗掰。

(3)如果window也不處理事件,就將事件傳遞給UIApplication處理嵌言。

(4)如果UIApplication也不處理該事件,則丟棄該事件。


注:更多細(xì)節(jié)處理可參考文章觸摸事件詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末及穗,一起剝皮案震驚了整個(gè)濱河市摧茴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌埂陆,老刑警劉巖苛白,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異焚虱,居然都是意外死亡购裙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門著摔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缓窜,“玉大人,你說(shuō)我怎么就攤上這事谍咆『檀福” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵摹察,是天一觀的道長(zhǎng)恩掷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)供嚎,這世上最難降的妖魔是什么黄娘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮克滴,結(jié)果婚禮上逼争,老公的妹妹穿的比我還像新娘。我一直安慰自己劝赔,他們只是感情好誓焦,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著着帽,像睡著了一般杂伟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仍翰,一...
    開(kāi)封第一講書(shū)人閱讀 52,895評(píng)論 1 314
  • 那天赫粥,我揣著相機(jī)與錄音,去河邊找鬼予借。 笑死越平,一個(gè)胖子當(dāng)著我的面吹牛频蛔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喧笔,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼帽驯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了书闸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤利凑,失蹤者是張志新(化名)和其女友劉穎浆劲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哀澈,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牌借,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了割按。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膨报。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖适荣,靈堂內(nèi)的尸體忽然破棺而出现柠,到底是詐尸還是另有隱情,我是刑警寧澤弛矛,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布够吩,位于F島的核電站,受9級(jí)特大地震影響丈氓,放射性物質(zhì)發(fā)生泄漏周循。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一万俗、第九天 我趴在偏房一處隱蔽的房頂上張望湾笛。 院中可真熱鬧,春花似錦闰歪、人聲如沸嚎研。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嘉赎。三九已至,卻和暖如春于樟,著一層夾襖步出監(jiān)牢的瞬間公条,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工迂曲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留靶橱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像关霸,于是被迫代替她去往敵國(guó)和親传黄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

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

  • 在開(kāi)發(fā)過(guò)程中队寇,大家或多或少的都會(huì)碰到令人頭疼的手勢(shì)沖突問(wèn)題膘掰,正好前兩天碰到一個(gè)類似的bug,于是借著這個(gè)機(jī)會(huì)了解了...
    閆仕偉閱讀 5,361評(píng)論 2 23
  • 在iOS開(kāi)發(fā)中經(jīng)常會(huì)涉及到觸摸事件佳遣。本想自己總結(jié)一下识埋,但是遇到了這篇文章,感覺(jué)總結(jié)的已經(jīng)很到位零渐,特此轉(zhuǎn)載窒舟。作者:L...
    WQ_UESTC閱讀 6,026評(píng)論 4 26
  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的?困惑于Cell怎么突然不能點(diǎn)擊了诵盼?糾結(jié)于如何實(shí)現(xiàn)這個(gè)奇葩響應(yīng)需求惠豺?亦或是...
    Lotheve閱讀 57,366評(píng)論 51 599
  • 概覽iPhone的成功很大一部分得益于它多點(diǎn)觸摸的強(qiáng)大功能,喬布斯讓人們認(rèn)識(shí)到手機(jī)其實(shí)是可以不用按鍵和手寫(xiě)筆直接操...
    紙簡(jiǎn)書(shū)生閱讀 1,449評(píng)論 0 6
  • iOS中的事件 響應(yīng)者對(duì)象 - 在iOS中不是任何對(duì)象都能處理事件固翰,只有繼承了UIResponder的對(duì)象才能接收...
    Hevin_Chen閱讀 635評(píng)論 0 0