cancelsTouchesInView/delaysTouchesBegan/delaysTouchesEnded
?*?? (0)首先要知道的是
??????? 1.這3個屬性是作用于GestureRecognizers(手勢識別)與觸摸事件之間聯(lián)系的屬性。實際應(yīng)用中好像很少會把它們放到一起屏积,大多都只是運用手勢識別医窿,所以這3個屬性應(yīng)該很少會用到。
??????? 2.對于觸摸事件炊林,window只會有一個控件來接收touch姥卢。這個控件是首先接觸到touch的并且重寫了觸摸事件方法(一個即可)的控件
??????? 3.手勢識別和觸摸事件是兩個獨立的事,只是可以通過這3個屬性互相影響渣聚,不要混淆独榴。
?*??(1)在默認情況下(即這3個屬性都處于默認值的情況下),如果觸摸window奕枝,首先由window上最先符合條件的控件(該控件記為hit-test view)接收到該touch并觸發(fā)觸摸事件touchesBegan棺榔。同時如果某個控件的手勢識別器接收到了該touch,就會進行識別倍权。手勢識別成功之后發(fā)送觸摸事件touchesCancelled給hit-testview掷豺,hit-test view不再響應(yīng)touch捞烟。
?*?(2)cancelsTouchesInView:
????默認為YES,這種情況下當手勢識別器識別到touch之后薄声,會發(fā)送touchesCancelled給hit-testview以取消hit-test view對touch的響應(yīng),這個時候只有手勢識別器響應(yīng)touch题画。
????當設(shè)置成NO時默辨,手勢識別器識別到touch之后不會發(fā)送touchesCancelled給hit-test,這個時候手勢識別器和hit-test view均響應(yīng)touch苍息。
?*?(3)delaysTouchesBegan:
????默認是NO缩幸,這種情況下當發(fā)生一個touch時,手勢識別器先捕捉到到touch竞思,然后發(fā)給hit-testview表谊,兩者各自做出響應(yīng)。如果設(shè)置為YES盖喷,手勢識別器在識別的過程中(注意是識別過程)爆办,不會將touch發(fā)給hit-test view,即hit-testview不會有任何觸摸事件课梳。只有在識別失敗之后才會將touch發(fā)給hit-testview距辆,這種情況下hit-test view的響應(yīng)會延遲約0.15ms余佃。
?*?(4)delaysTouchesEnded:
????默認為YES。這種情況下發(fā)生一個touch時跨算,在手勢識別成功后,發(fā)送給touchesCancelled消息給hit-testview爆土,手勢識別失敗時,會延遲大概0.15ms,期間沒有接收到別的touch才會發(fā)送touchesEnded诸蚕。如果設(shè)置為NO步势,則不會延遲,即會立即發(fā)送touchesEnded以結(jié)束當前觸摸背犯。
---------------------
作者:熱氣球的天空
來源:CSDN
原文:https://blog.csdn.net/petyou123/article/details/50893823
版權(quán)聲明:本文為博主原創(chuàng)文章立润,轉(zhuǎn)載請附上博文鏈接!