日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发中手势处理简介(二)

發布時間:2023/12/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发中手势处理简介(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iOS中手勢操作事件的產生于傳遞

發生觸摸事件后,系統會將該事件加入到一個由UIApplication管理的事件隊列中

UIApplication會從事件隊列中取出最前面的事件,并將事件分發下去以便處理,通常,先發送事件給應用程序的主窗口(keyWindow)

主窗口會在視圖層次結構中找到一個最合適的視圖來處理觸摸事件,但是這僅僅是整個事件處理過程的第一步

找到合適的視圖控件后,就會調用視圖控件的touches方法來作具體的事件處理
touchesBegan…
touchesMoved…
touchedEnded…

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

注意:如果父控件不能接收觸摸事件,那么子控件就不可能接收到觸摸事件(掌握)

如何找到最合適的控件來處理事件?
1> 自己是否能接收觸摸事件?否,事件傳遞到此結束
2> 觸摸點是否在自己身上?否,事件傳遞到此結束
3> 從后往前遍歷子控件,重復前面的兩個步驟
4> 如果沒有符合條件的子控件,那么就自己最適合處理

UIView不接受觸摸事件的三種情況:
不接收用戶交互
userInteractionEnabled = NO

隱藏
hidden = YES

透明
alpha = 0.0 ~ 0.01

提示:UIImageView的userInteractionEnabled默認就是NO,因此UIImageView以及它的子控件默認是不能接收觸摸事件的
觸摸事件處理的詳細過程
用戶點擊屏幕后產生的一個觸摸事件,經過一系列的傳遞過程后,會找到最合適的視圖控件來處理這個事件

找到最合適的視圖控件后,就會調用控件的touches方法來作具體的事件處理
touchesBegan…
touchesMoved…
touchedEnded…

這些touches方法的默認做法是將事件順著響應者鏈條向上傳遞,將事件交給上一個響應者進行處理
響應者鏈條
響應者鏈條:是由多個響應者對象連接起來的鏈條
作用:能很清楚的看見每個響應者之間的聯系,并且可以讓一個事件多個對象處理。
響應者對象:能處理事件的對象
事件傳遞的完整過程
1> 先將事件對象由上往下傳遞(由父控件傳遞給子控件),找到最合適的控件來處理這個事件。

2> 調用最合適控件的touches….方法

3> 如果調用了[super touches….];就會將事件順著響應者鏈條往上傳遞,傳遞給上一個響應者

4> 接著就會調用上一個響應者的touches….方法
如何判斷上一個響應者

1> 如果當前這個view是控制器的view,那么控制器就是上一個響應者

2> 如果當前這個view不是控制器的view,那么父控件就是上一個響應者
響應者鏈的事件傳遞過程
如果view的控制器存在,就傳遞給控制器;如果控制器不存在,則將其傳遞給它的父視圖
在視圖層次結構的最頂級視圖,如果也不能處理收到的事件或消息,則其將事件或消息傳遞給window對象進行處理
如果window對象也不處理,則其將事件或消息傳遞給UIApplication對象
如果UIApplication也不能處理該事件或消息,則將其丟棄

總結

以上是生活随笔為你收集整理的iOS开发中手势处理简介(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。