iOS學習筆記05-觸摸事件

一屎开、事件分發(fā)處理【由外到內(nèi)】

在iOS中發(fā)生觸摸后,事件會加到UIApplication事件隊列畴蒲,UIApplication會從事件隊列取出最前面的事件進行分發(fā)處理虹统,通常會先分發(fā)給主窗口,主窗口會調(diào)用hitTest:withEvent:方法吨岭,查找適合的事件觸發(fā)視圖拉宗,即 找到被觸摸的視圖對象

尋找流程如下:
  1. 在頂級視圖(keyWindow的視圖)上調(diào)用pointInside:withEvent:方法判斷觸摸點是否在當前視圖內(nèi);
  1. 如果返回NO,那么keyWindow的hitTest:withEvent:返回nil旦事;
  2. 如果返回YES魁巩,那么它會向當前視圖的所有子視圖發(fā)送hitTest:withEvent:消息,遍歷所有子視圖的順序是從subviews數(shù)組的末尾向前遍歷(從界面最上方開始向下遍歷)姐浮;
  3. 如果有subview的hitTest:withEvent:返回非空對象谷遂,則keyWindow的hitTest:withEvent:返回此對象,處理結(jié)束卖鲤;
  4. 如果所有subview遍歷結(jié)束仍然沒有返回非空對象肾扰,則keyWindow的hitTest:withEvent:返回頂級視圖;

二蛋逾、響應者鏈條【由內(nèi)到外】

找到被觸摸的視圖對象后集晚,還需要判斷該視圖對象是否能處理該觸摸事件,如果不能處理区匣,又該讓誰來處理偷拔,于是響應者鏈條出現(xiàn),作用是 找到事件響應者

響應者鏈條圖示

響應者鏈條原則:
  1. 觸摸對象initalView無法響應事件時亏钩,傳遞給上級視圖superView去響應
  1. 如果上級視圖無法響應莲绰,繼續(xù)往上傳遞
  2. 往上傳遞直到傳遞到視圖控制器的根視圖controllerView,如果根視圖不響應铸屉,傳遞給視圖控制器viewController
  3. 視圖控制器不響應钉蒲,傳遞給父視圖控制器的根視圖superControllerView,如果根視圖不響應彻坛,傳遞給父視圖控制器superViewController
  4. 頂級視圖控制器不能響應顷啼,傳遞給主窗口keyWindow
  5. keyWindow不能響應,傳遞給UIApplication處理
  6. UIApplication不能響應昌屉,該事件就會被 拋棄

三钙蒙、繼承UIResponder

以上 事件分發(fā)響應者鏈條 ,都不需要我們關心间驮,這些操作是自動執(zhí)行的躬厌,不需要我們?nèi)ゲ僮鳎覀冎恍枰私馑鼈兊脑砭托小?br> 在iOS中并不是所有的類都能處理并接受事件竞帽,只有繼承UIResponder的對象才能處理事件(我們常用的UIView扛施、UIViewControllerUIApplication都繼承自UIResponder屹篓,它們都能接收并處理事件?)疙渣,但繼承UIResponder又不意味著一定能處理事件

繼承 UIResponder 的對象,不能處理事件的情況:
  • userInteractionEnabled = NO;
  • hidden = YES;
  • alpha = 0 ~ 0.01;
  • 沒有實現(xiàn)touchesBegan:withEvent方法
重寫UIResponder 觸摸響應方法:
#pragma mark 觸摸開始時會調(diào)用
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
#pragma mark 觸摸移動時會頻繁調(diào)用
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
#pragma mark 觸摸結(jié)束離開屏幕時會調(diào)用
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
#pragma mark 觸摸意外取消時會調(diào)用堆巧,比如觸摸時電話打進來
- (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];

其他常用屬性:
  • window : 觸摸所在窗口
  • view : 觸摸所在視圖
  • tapCount : 短時間點擊次數(shù)

了解了這些,你就可以利用觸摸事件做一些好玩的事情了啦租,(o)/~哗伯,這里就不列具體代碼了。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末篷角,一起剝皮案震驚了整個濱河市焊刹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌内地,老刑警劉巖伴澄,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阱缓,居然都是意外死亡非凌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門荆针,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敞嗡,“玉大人,你說我怎么就攤上這事航背『磴玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵玖媚,是天一觀的道長箕肃。 經(jīng)常有香客問我,道長今魔,這世上最難降的妖魔是什么勺像? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮错森,結(jié)果婚禮上吟宦,老公的妹妹穿的比我還像新娘。我一直安慰自己涩维,他們只是感情好殃姓,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓦阐,像睡著了一般蜗侈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睡蟋,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天宛篇,我揣著相機與錄音,去河邊找鬼薄湿。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的豺瘤。 我是一名探鬼主播吆倦,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坐求!你這毒婦竟也來了蚕泽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桥嗤,失蹤者是張志新(化名)和其女友劉穎须妻,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泛领,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡荒吏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了渊鞋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绰更。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锡宋,靈堂內(nèi)的尸體忽然破棺而出儡湾,到底是詐尸還是另有隱情,我是刑警寧澤执俩,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布徐钠,位于F島的核電站,受9級特大地震影響役首,放射性物質(zhì)發(fā)生泄漏尝丐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一宋税、第九天 我趴在偏房一處隱蔽的房頂上張望摊崭。 院中可真熱鬧,春花似錦杰赛、人聲如沸呢簸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽根时。三九已至,卻和暖如春辰晕,著一層夾襖步出監(jiān)牢的瞬間蛤迎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工含友, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留替裆,地道東北人校辩。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像辆童,于是被迫代替她去往敵國和親宜咒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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