W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
通過給各個組件綁定不同的手勢事件,并設(shè)計事件的響應(yīng)方式,當(dāng)手勢識別成功時,ArkUI框架將通過事件回調(diào)通知組件手勢識別的結(jié)果。
- .gesture(gesture: GestureType, mask?: GestureMask)
gesture為通用的一種手勢綁定方法,可以將手勢綁定到對應(yīng)的組件上。
例如,可以將點擊手勢TapGesture通過gesture手勢綁定方法綁定到Text組件上。
- // xxx.ets
- @Entry
- @Component
- struct Index {
- build() {
- Column() {
- Text('Gesture').fontSize(28)
- // 采用gesture手勢綁定方法綁定TapGesture
- .gesture(
- TapGesture()
- .onAction(() => {
- console.info('TapGesture is onAction');
- }))
- }
- .height(200)
- .width(250)
- }
- }
- .priorityGesture(gesture: GestureType, mask?: GestureMask)。
priorityGesture是帶優(yōu)先級的手勢綁定方法,可以在組件上綁定優(yōu)先識別的手勢。
在默認(rèn)情況下,當(dāng)父組件和子組件使用gesture綁定同類型的手勢時,子組件優(yōu)先識別通過gesture綁定的手勢。當(dāng)父組件使用priorityGesture綁定與子組件同類型的手勢時,父組件優(yōu)先識別通過priorityGesture綁定的手勢。
例如,當(dāng)父組件Column和子組件Text同時綁定TapGesture手勢時,父組件以帶優(yōu)先級手勢priorityGesture的形式進行綁定時,優(yōu)先響應(yīng)父組件綁定的TapGesture。
- // xxx.ets
- @Entry
- @Component
- struct Index {
- build() {
- Column() {
- Text('Gesture').fontSize(28)
- .gesture(
- TapGesture()
- .onAction(() => {
- console.info('Text TapGesture is onAction');
- }))
- }
- .height(200)
- .width(250)
- // 設(shè)置為priorityGesture時,點擊文本區(qū)域會忽略Text組件的TapGesture手勢事件,優(yōu)先響應(yīng)父組件Column的TapGesture手勢事件
- .priorityGesture(
- TapGesture()
- .onAction(() => {
- console.info('Column TapGesture is onAction');
- }), GestureMask.IgnoreInternal)
- }
- }
- .parallelGesture(gesture: GestureType, mask?: GestureMask)
parallelGesture是并行的手勢綁定方法,可以在父子組件上綁定可以同時響應(yīng)的相同手勢。
在默認(rèn)情況下,手勢事件為非冒泡事件,當(dāng)父子組件綁定相同的手勢時,父子組件綁定的手勢事件會發(fā)生競爭,最多只有一個組件的手勢事件能夠獲得響應(yīng)。而當(dāng)父組件綁定了并行手勢parallelGesture時,父子組件相同的手勢事件都可以觸發(fā),實現(xiàn)類似冒泡效果。
- // xxx.ets
- @Entry
- @Component
- struct Index {
- build() {
- Column() {
- Text('Gesture').fontSize(28)
- .gesture(
- TapGesture()
- .onAction(() => {
- console.info('Text TapGesture is onAction');
- }))
- }
- .height(200)
- .width(250)
- // 設(shè)置為parallelGesture時,點擊文本區(qū)域會同時響應(yīng)父組件Column和子組件Text的TapGesture手勢事件
- .parallelGesture(
- TapGesture()
- .onAction(() => {
- console.info('Column TapGesture is onAction');
- }), GestureMask.IgnoreInternal)
- }
- }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: