功能需求:父组件onTouch触发前并未知道是否需要阻塞子节点web的滚动,onTouch触发过程需要临时阻塞web滚动。
目前问题:onTouch触发过程设置web().enabled(false),或者设置Column(){}.hitTestBehavior(HitTestMode.Block),都无法临时阻塞web的滚动,enabled和hitTestBehavior,只能在onTouch触发前设置才有效,无法满足功能需要
结构代码如下:
@State columnHitTestMode:HitTestMode=HitTestMode.Default
@State webEnabled:boolean=true
Column(){
web().enabled(this.webEnabled)
}.hitTestBehavior(this.columnHitTestMode)
.onTouch((event?: TouchEvent)=>{
if (!event) return
switch (event.type){
case TouchType.Down: {
this.columnHitTestMode=HitTestMode.Block
this.webEnabled=false
}
case TouchType.Down: {}
case TouchType.Down: {
this.columnHitTestMode=HitTestMode.Default
this.webEnabled=false
}
})
可使用setScrollable设置网页是否允许滚动
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#setscrollable12