From e87fb7cf68ff079f911d24cf2b11fb23b3c425cc Mon Sep 17 00:00:00 2001 From: wwwcg Date: Tue, 8 Oct 2024 15:17:41 +0800 Subject: [PATCH] docs(react,vue): update docs of pointerEvents prop --- docs/api/hippy-react/components.md | 27 ++++++++++++++++++- docs/api/hippy-vue/components.md | 26 ++++++++++++++++++ .../scrollview/HippyScrollViewManager.mm | 10 +++---- 3 files changed, 57 insertions(+), 6 deletions(-) diff --git a/docs/api/hippy-react/components.md b/docs/api/hippy-react/components.md index 146f66f9335..205498ed405 100644 --- a/docs/api/hippy-react/components.md +++ b/docs/api/hippy-react/components.md @@ -442,7 +442,32 @@ import icon from './qb_icon_new.png'; | onTouchMove | 当用户在控件移动手指时,此函数会持续收到回调,并通过event参数告知控件的触屏点信息;参数为 `nativeEvent: { name, page_x, page_y, id }`,`page_x` 和 `page_y` 分别表示点击在屏幕内的绝对位置 | `Function` | `Android、iOS、hippy-react-web、Web-Renderer、Voltron` | | onTouchEnd | 当触屏操作结束,用户在该控件上抬起手指时,此函数将被回调,event参数也会通知当前的触屏点信息;参数为 `nativeEvent: { name, page_x, page_y, id }`,`page_x` 和 `page_y` 分别表示点击在屏幕内的绝对位置 | `Function` | `Android、iOS、hippy-react-web、Web-Renderer、Voltron` | | onTouchCancel | 当用户触屏过程中,某个系统事件中断了触屏,例如电话呼入、组件变化(如设置为hidden)、其他组件的滑动手势,此函数会收到回调,触屏点信息也会通过event参数告知前端;参数为 `nativeEvent: { name, page_x, page_y, id }`,`page_x` 和 `page_y` 分别表示点击在屏幕内的绝对位置 | `Function` | `Android、iOS、hippy-react-web、Web-Renderer、Voltron` | - +| pointerEvents | 用于控制视图是否可以成为触摸事件的目标。 | `enum('box-none', 'none', 'box-only', 'auto')` | `iOS` | + +* pointerEvents 的参数含义: + * `auto`(默认值) - 视图可以是触摸事件的目标; + * `none` - 视图永远不是触摸事件的目标; + * `box-none` - 视图不是触摸事件的目标,但它的子视图可以是。其行为类似视图在CSS中有以下类: + + ```css + .box-none { + pointer-events: none; + } + .box-none * { + pointer-events: auto; + } + ``` + + * `box-only` - 视图可以是触摸事件的目标,但它的子视图不能。其行为类似视图在CSS中有以下类: + + ```css + .box-only { + pointer-events: auto; + } + .box-only * { + pointer-events: none; + } + ``` ## 方法 diff --git a/docs/api/hippy-vue/components.md b/docs/api/hippy-vue/components.md index 2798dc62468..f1ed07144cb 100644 --- a/docs/api/hippy-vue/components.md +++ b/docs/api/hippy-vue/components.md @@ -67,6 +67,32 @@ | showsHorizontalScrollIndicator | 当此值设为 `false` 的时候,`ScrollView` 会隐藏水平的滚动条。`default: true` `(仅在 overflow-y/x: scroll 时适用)`| `boolean` | `iOS、Voltron` | | showsVerticalScrollIndicator | 当此值设为 `false` 的时候,`ScrollView` 会隐藏垂直的滚动条。 `default: true` `(仅在 overflow-y/x: scroll 时适用)`| `boolean` | `iOS、Voltron` | | nativeBackgroundAndroid | 配置水波纹效果,`最低支持版本 2.13.1`;配置项为 `{ borderless: boolean, color: Color, rippleRadius: number }`; `borderless` 表示波纹是否有边界,默认false;`color` 波纹颜色;`rippleRadius` 波纹半径,若不设置,默认容器边框为边界; `注意:设置水波纹后默认不显示,需要在对应触摸事件中调用 setPressed 和 setHotspot 方法进行水波纹展示,详情参考相关`[demo](//github.com/Tencent/Hippy/tree/master/examples/hippy-vue-demo/src/components/demos/demo-div.vue) | `Object`| `Android` | +| pointerEvents | 用于控制视图是否可以成为触摸事件的目标。 | `enum('box-none', 'none', 'box-only', 'auto')` | `iOS` | + +* pointerEvents 的参数含义: + * `auto`(默认值) - 视图可以是触摸事件的目标; + * `none` - 视图永远不是触摸事件的目标; + * `box-none` - 视图不是触摸事件的目标,但它的子视图可以是。其行为类似视图在CSS中有以下类: + + ```css + .box-none { + pointer-events: none; + } + .box-none * { + pointer-events: auto; + } + ``` + + * `box-only` - 视图可以是触摸事件的目标,但它的子视图不能。其行为类似视图在CSS中有以下类: + + ```css + .box-only { + pointer-events: auto; + } + .box-only * { + pointer-events: none; + } + ``` --- diff --git a/renderer/native/ios/renderer/component/scrollview/HippyScrollViewManager.mm b/renderer/native/ios/renderer/component/scrollview/HippyScrollViewManager.mm index 0511fd71dbc..7e64562ff82 100644 --- a/renderer/native/ios/renderer/component/scrollview/HippyScrollViewManager.mm +++ b/renderer/native/ios/renderer/component/scrollview/HippyScrollViewManager.mm @@ -89,7 +89,7 @@ - (UIView *)view { HIPPY_EXPORT_METHOD(getContentSize:(nonnull NSNumber *)hippyTag - callback:(HippyPromiseResolveBlock)callback) { + callback:(nonnull HippyPromiseResolveBlock)callback) { [self.bridge.uiManager addUIBlock:^(__unused HippyUIManager *uiManager, NSDictionary *viewRegistry) { HippyScrollView *view = viewRegistry[hippyTag]; CGSize size = view.scrollView.contentSize; @@ -98,9 +98,9 @@ - (UIView *)view { } HIPPY_EXPORT_METHOD(scrollTo:(nonnull NSNumber *)hippyTag - offsetX:(NSNumber *)x - offsetY:(NSNumber *)y - animated:(NSNumber *)animated) { + offsetX:(nonnull NSNumber *)x + offsetY:(nonnull NSNumber *)y + animated:(nonnull NSNumber *)animated) { [self.bridge.uiManager addUIBlock:^(__unused HippyUIManager *uiManager, NSDictionary *viewRegistry){ UIView *view = viewRegistry[hippyTag]; if (view == nil) return ; @@ -114,7 +114,7 @@ - (UIView *)view { } HIPPY_EXPORT_METHOD(scrollToWithOptions:(nonnull NSNumber *)hippyTag - options:(NSDictionary *)options) { + options:(nullable NSDictionary *)options) { [self.bridge.uiManager addUIBlock:^(__unused HippyUIManager *uiManager, NSDictionary *viewRegistry){ UIView *view = viewRegistry[hippyTag]; if (view == nil) return ;