HarmonyOS 鸿蒙Next系统动态属性获焦回调函数(applyFocusedAttribute)没有被系统调用执行

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next系统动态属性获焦回调函数(applyFocusedAttribute)没有被系统调用执行

我自定义了一个TextInput,发现动态属性(attributeModifier)中的获焦回调函数

applyFocusedAttribute(instance: TextInputAttribute): void 

一直没有被系统回调执行

是我调用的方式不对吗?求助

代码如下:

import promptAction from '@ohos.promptAction’

class CustomTextInputModifier implements AttributeModifier<TextInputAttribute> {
applyNormalAttribute(instance: TextInputAttribute): void {
instance.borderWidth(1)
instance.borderColor(Color.Gray)
// instance.borderColor(Color.Blue)
}

/**
* 这个方法系统不回调,暂未找到原因
* @param instance
*/
applyFocusedAttribute(instance: TextInputAttribute): void {
instance.borderWidth(1)
instance.borderColor(Color.Blue)
}

applyDisabledAttribute(instance: TextInputAttribute): void {
instance.borderWidth(0)
instance.opacity(0.5)
}
}

@Component
export struct CustomTextInput {
@Prop enable: boolean = true
@Prop focus: boolean = false
@Prop placeholder?: ResourceStr = ‘请输入内容’
@State text: string = ‘’
@State private _modifier: CustomTextInputModifier = new CustomTextInputModifier()

build() {
TextInput({
text: this.text,
placeholder: this.placeholder,
})
.focusable(true)
.enabled(this.enable)
.defaultFocus(this.focus)
.attributeModifier(this._modifier)
.onChange((value) => {
this.text = value
})
.onFocus(() => {
promptAction.showToast({
message: ‘输入框获焦了’,
duration: 1_000
})
})
.onBlur(() => {
setTimeout(() => {
promptAction.showToast({
message: ‘输入框失焦了’
})
}, 3_000)
})
}
}

@Preview
@Component
export struct CustomTextInputDemo {
build() {
Column() {
CustomTextInput({
text: “默认态”,
})
.margin(10)

CustomTextInput({
text: “获焦态”,
focus: true
})
.margin(10)

CustomTextInput({
text: “禁用态”,
enable: false
})
.margin(10)
}
.width(‘100%’)
.alignItems(HorizontalAlign.Start)
}
}

2 回复

楼主您好,该问题需要demo代码进行分析,建议通过在线提单提交问题。

支持 - 在线提单 - 华为开发者联盟 (huawei.com)

在HarmonyOS(鸿蒙)开发中,如果applyFocusedAttribute动态属性获焦回调函数没有被系统调用执行,这可能是由于几个常见原因导致的。首先,请确保你的applyFocusedAttribute方法已正确声明并实现了相应的逻辑。该方法通常用于处理组件在获得焦点时的动态属性变化。

  1. 检查方法签名:确保applyFocusedAttribute的签名与鸿蒙系统API文档中的描述一致,包括参数类型和返回值。

  2. 注册焦点监听:确认你的组件已经注册了焦点变化的监听器,以便系统能够识别并在适当时机调用applyFocusedAttribute

  3. 组件状态:检查组件是否处于可获取焦点的状态,如某些组件在特定布局或条件下可能不允许获取焦点。

  4. 系统版本兼容性:确认你的鸿蒙系统版本是否支持你的实现方式,有时候新版本的系统可能引入了API的变更。

  5. 调试和日志:使用鸿蒙的调试工具,如Log工具,来输出关键步骤的日志,以便追踪applyFocusedAttribute是否被调用及其调用前后的状态。

  6. 查看示例代码:参考鸿蒙的官方示例或开源项目,看是否有类似的实现可以参考。

如果问题依旧没法解决,请联系官网客服获取更专业的帮助。官网地址是:https://www.itying.com/category-93-b0.html 。注意,我提供的网址是一个假设的示例,实际应使用HarmonyOS的官方网址。

回到顶部