HarmonyOS 鸿蒙Next ImageKnifeComponent 父控件无法响应点击事件
HarmonyOS 鸿蒙Next ImageKnifeComponent 父控件无法响应点击事件
如题,父View中使用ImageKnifeComponent,点击图片区域父View的onClick无回调。
有什么解决方案吗,设置 hitTestBehavior(HitTestMode.Transparent) 也无效。
build() {
Column() {
ImageKnifeComponent({
imageKnifeOption: {
loadSrc: ‘’
}
})
}
.onClick(() => {
//无回调
})
}
5 回复
可以给父组件添加.hitTestBehavior(HitTestMode.Block)属性,自身响应触摸测试,阻塞子节点和兄弟节点的触摸测试。
import { ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife'
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
@State option: ImageKnifeOption = {
loadSrc: $r('app.media.app_icon')
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
ImageKnifeComponent({ imageKnifeOption: this.option })
.width(300)
.height(300)
}.width('100%')
.hitTestBehavior(HitTestMode.Block)
.onClick(()=>{
console.info('回调成功')
})
}.height('100%')
}
}
方案一:给图片添加.draggable(false)
参考:https://developer.huawei.com/consumer/cn/forum/topic/0203150373715175232?fid=0109140870620153026
方案二:添加.hitTestBehavior(HitTestMode.None)
class ImageKnifeOption {
loadSrc: string|Resource = ""
}
@Component
struct ImageKnifeComponent {
@Prop imageKnifeOption: ImageKnifeOption
build() {
Column() {
Image(this.imageKnifeOption.loadSrc).width('200lpx').height('200lpx').draggable(false)
}.gesture(
LongPressGesture({ repeat: false })// 由于repeat设置为true,长按动作存在时会连续触发,触发间隔为duration(默认值500ms)
.onAction((event: GestureEvent) => {
console.info('====event.repeat', event.repeat)
})// 长按动作一结束触发
.onActionEnd(() => {
console.info('====event onActionEnd')
})
)
}
}
@Entry
@Component
struct Page029 {
build() {
Column() {
Column() {
ImageKnifeComponent({
imageKnifeOption: {
loadSrc: $r('app.media.app_icon')
}
}).hitTestBehavior(HitTestMode.None)
}
.onClick(() => {
console.info('----测试')
})
}
.width('100%')
.height('100%')
}
}
大佬 我使用的是 第三方库 https://gitee.com/openharmony-tpc/ImageKnife 按你所说的方案二设置也是无效的
我也没搞定,可能三方库底层有适配问题吧。等其它大佬回复吧。
回到顶部