diff --git a/arkui/ace_engine/native/libace.ndk.json b/arkui/ace_engine/native/libace.ndk.json index a8f6e0e5c514bee1691e8509bc922d97cb2bb12b..f0145c3c8f8fbb2323aaefff7ba64ed4e1d1c701 100644 --- a/arkui/ace_engine/native/libace.ndk.json +++ b/arkui/ace_engine/native/libace.ndk.json @@ -3438,5 +3438,13 @@ { "first_introduced": "20", "name": "OH_ArkUI_NodeUtils_GetNodeUniqueId" + }, + { + "first_introduced": "20", + "name": "OH_ArkUI_PreventGestureRecognizerBegin" + }, + { + "first_introduced": "20", + "name": "OH_ArkUI_SetTouchTestDoneCallback" } ] \ No newline at end of file diff --git a/arkui/ace_engine/native/native_gesture.h b/arkui/ace_engine/native/native_gesture.h index aa4b37c23759e2e08572eee0a3454cc0ba76113f..f2ee43f116c3f1bc05febbea842617bd78ad4cf8 100644 --- a/arkui/ace_engine/native/native_gesture.h +++ b/arkui/ace_engine/native/native_gesture.h @@ -1162,6 +1162,45 @@ typedef struct { */ void* OH_ArkUI_GestureInterrupter_GetUserData(ArkUI_GestureInterruptInfo* event); +/** + * @brief Registers a callback that is executed after all gesture recognizers are collected. + * When the user begins touching the screen, the system performs hit testing and collects gesture recognizers + * based on the touch location. Subsequently, before processing any move events, the component can use this API + * to determine the gesture recognizers that will participate in and compete for recognition. + * + * @param node Handle to the node on which the callback is to be set. + * @param userData Custom data. + * @param recognizerCollected Callback for completion of gesture recognizer collection. + * @return Result code. + * {@link ARKUI_ERROR_CODE_NO_ERROR}: The operation is successful. + * {@link ARKUI_ERROR_CODE_PARAM_INVALID}: A parameter error occurs. + * @since 20 + */ +ArkUI_ErrorCode OH_ArkUI_SetTouchTestDoneCallback( + ArkUI_NodeHandle node, + void* userData, + void (*touchTestDone)( + ArkUI_GestureEvent* event, + ArkUI_GestureRecognizerHandleArray recognizers, + int32_t count, + void* userData + ) +); + +/** + * @brief Prevents a gesture recognizer from participating in the current gesture recognition before all fingers are + * lifted. + * If the system has already determined the result of the gesture recognizer (regardless of success or failure), + * calling this API will be ineffective. + * + * @param recognizer Pointer to a gesture recognizer. + * @return Result code. + * {@link ARKUI_ERROR_CODE_NO_ERROR}: The operation is successful. + * {@link ARKUI_ERROR_CODE_PARAM_INVALID}: A parameter error occurs. + * @since 20 + */ +ArkUI_ErrorCode OH_ArkUI_PreventGestureRecognizerBegin(ArkUI_GestureRecognizer* recognizer); + #ifdef __cplusplus }; #endif