(GeekBand) iOS高級編程第一周--事件處理與手勢操作

UIView系統(tǒng)自帶的并不能處理事件,所以我們給UIVIew加上處理事件的能力從而來研究iOS的事件處理

UITouch

1.觸摸事件方法中的UITouch都是同一個對象,因為一根手指對應一個UITouch.當手指移動或者抬起税课,并不會產(chǎn)生一個新的UITouch對象給你,而是改變UITouch里面的屬性琐鲁,
1.默認三個方法里面只能獲取到一個手指,為什么围段。UIView不支持多點觸控
2.怎么才能有兩個手指,兩個手指同時按投放,并且視圖支持多點觸控
3.UITouch的tapCount有什么用奈泪?可以判斷用戶當前是雙擊還是單擊
4.UITouch的phase有什么用? 根據(jù)這個屬性,判斷當前需要調(diào)用哪個處理事件方法涝桅,begin,move,end
程序思路:
* 在TouchMove里面做事情-為什么?因為用戶手指在視圖上移動的時候才需要移動視圖拜姿。
* 獲取用戶當前的位置冯遂,獲取用戶之前的位置砾隅,就知道用戶從哪移動到哪,這個位置也是視圖移動的位置
* 當前視圖的位置 = 上一次視圖的位置 + 手指的偏移量

//關鍵方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   NSLog(@"%@---touchesBegan",[self class]);
}

02-事件傳遞
* 事件,加入到一個由誰管理的事件隊列中?UIApplication
* 為什么用隊列债蜜,不用棧晴埂。隊列先進先出寻定,意味著先產(chǎn)生的事件儒洛,先處理狼速。

  • 代碼驗證事件誰處理
    • 界面上這么多view,驗證哪個view處理事件向胡。這么多view,都需要監(jiān)重寫一個方法僵芹,搞個父類。
    • 一個view能處理事件拇派,意味著事件傳遞給他了,那怎么傳遞? 事件是由父控件傳遞給子控件件豌。
    • 父控件不處理事件,子控件也不能骡显。藍色不接收事件,黃色也不會接收事件? 為什么惫谤,因為事件是從父控件傳遞給子控件的遭殉。父控件都沒有事件石挂,怎么傳給子控件险污。
  • 代碼驗證view不能處理事件
    • 一個view怎么不能處理事件。userInteractionEnabled = NO蛔糯,hidden = YES,alpha <= 0.01
  • 代碼驗證UIImageView不允許交互
    • UIImageView默認不允許用戶交互动壤,因此默認它上面的子控件不能接收事件。
  • 怎么找到最合適的View琼懊?通過一個遞歸。
    • 第一個接收事件的控件是誰?窗口
    • 當事件傳遞給窗口的時候爬早,就會讓窗口去找最合適的view,1> 判斷自己能不能接收事件 2> 點在不在窗口上 3> 去找比自己更合適的view,從后往前遍歷子控件筛严,拿到子控件后,把事件傳遞給這個子控件 4> 子控件拿到事件之后车胡,又會做同樣的判斷照瘾,一直遞歸去找匈棘,直到找到最合適的view.
  • 事件傳遞的目的何在?找到最合適的view,把事件交給他析命。

hitText方法和pointInside方法

1. hitText什么時候調(diào)用:當一個事件傳遞給一個控件的時候羹饰,控件就會調(diào)用這個方法
2. hitText作用: 尋找到最合適的view。
* (回顧下事件傳遞)碳却,UIApplication -> UIWindow
*  UIWindow去尋找最合適的view? [UIWindow hitTest:withEvent:]里面做了什么事情?
1> 判斷窗口能不能處理事件? 如果不能昼浦,意味著窗口不是最合適的view倦沧,而且也不會去尋找比自己更合適的view,直接返回nil,通知UIApplication,沒有最合適的view油狂。
2> 判斷點在不在窗口
3> 遍歷自己的子控件默色,尋找有沒有比自己更合適的view
4> 如果子控件不接收事件,意味著子控件沒有找到最合適的view,然后返回nil,告訴窗口沒有找到更合適的view,窗口就知道沒有比自己更合適的view,就自己處理事件虐沥。
* 驗證下hitTest方法返回nil泽艘,里面的子控件能處理事件嗎镐依? 重寫根控制器view的hitTest:withEvent:方法,
* 驗證這個方法是否真能找到最合適的view槐壳?
* 如果點擊屏幕任何一個地方,都是白色的view雳攘,怎么做。直接返回白色的view,就不會繼續(xù)去找白色view的子控件了吨灭。
* pointInside方法
* pointInside作用:判斷一個點在不在一個控件上
* point參數(shù):方法調(diào)用者坐標系上的點崇堰,
* 學習完了pointInside,就能實現(xiàn)下hitTest方法底層是怎么做的了。

響應者鏈條(結(jié)合自己的demo寫的 有點抽象)

* touch默認做法:自己不處理事件海诲,交給上一個響應者處理touch事件。
* 響應者鏈條咨演,點擊綠色的view,如果不處理事件,就會往上傳遞薄风。
* 驗證touch的默認做法 先恢復所有view的默認做法
* 監(jiān)聽黃色點擊拍嵌,藍色點擊遭赂。
* 黃色調(diào)用默認做法横辆,事件傳遞給誰處理?藍色
* 得出結(jié)論:1> touch的默認做法:自己不處理,交給上一個響應者困肩。 2> 上一個響應者默認是父控件
* 兩個view怎么同時處理事件?一個view處理方法,在調(diào)用父類默認的做法
* 把事件傳遞給白色的view锌畸,怎么做?
* 總結(jié)下事件傳遞的完整過程.
* 把事件傳遞給控制器靖避,測試白色view的上一個響應者是否是控制器比默。
* 回顧響應者鏈條

滿地打滾賣萌求贊卸耘,如果本文幫助到你退敦,輕點下方的紅心蚣抗,給作者君增加更新的動力瓮下。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锭魔,隨后出現(xiàn)的幾起案子路呜,更是在濱河造成了極大的恐慌迷捧,老刑警劉巖胀葱,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抵屿,死亡現(xiàn)場離奇詭異庆锦,居然都是意外死亡轧葛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門求晶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衷笋,“玉大人芳杏,你說我怎么就攤上這事右莱。” “怎么了亚再?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵晨抡,是天一觀的道長则剃。 經(jīng)常有香客問我,道長如捅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任镜遣,我火速辦了婚禮,結(jié)果婚禮上谎僻,老公的妹妹穿的比我還像新娘寓辱。我一直安慰自己艘绍,他們只是感情好秫筏,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著航夺,像睡著了一般鹅颊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堪伍,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音帝雇,去河邊找鬼。 笑死彻亲,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的苞尝。 我是一名探鬼主播宦芦,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼调卑!你這毒婦竟也來了大咱?” 一聲冷哼從身側(cè)響起注益,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厦瓢,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旷痕,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡顽冶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年售碳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贸人。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡艺智,死狀恐怖倘要,靈堂內(nèi)的尸體忽然破棺而出十拣,到底是詐尸還是另有隱情,我是刑警寧澤夭问,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站捧杉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏味抖。R本人自食惡果不足惜灰粮,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谋竖。 院中可真熱鬧承匣,春花似錦锤悄、人聲如沸韧骗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽政模。三九已至,卻和暖如春淋样,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趁猴。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工彪见, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人余指。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像碉碉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子誉裆,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

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