【HarmonyOS NEXT】TextInput 渲染后如何控制不自动聚焦

本文介绍如何在Flutter应用中,通过合理设置TouchableOpacity组件和TextInput的defaultFocus属性,管理页面加载时TextInput的自动聚焦行为,确保用户体验。

 

【关键字】

TextInput / 自动聚焦 / 组件

【问题描述】

页面模块有搜索功能,但是不希望一进页面TextInput自动聚焦唤起键盘,是否有API能控制不自动聚焦。

【解决方案】

页面中需要有承接焦点的组件,如果没有其他组件,组件中的TextInput就会聚焦,可以将焦点转移实现取消TextInput获取焦点的效果。

示例代码

因为根据是否存在默认交互逻辑,可将组件分为可获焦和不可获焦组件,所以将焦点转移的时候有两种方案:

1、存在默认交互逻辑的组件(默认可获焦):Button、TextInput等,只需通过将defaultFocus属性设置为true即可获取焦点:

@Entry
@Component
struct Index {
controller: TextInputController = new TextInputController()

build() {
Row() {
TextInput({
placeholder: 'wait input...',
text: '',
controller: this.controller
})
Button('placeholder')
.defaultFocus(true)
}
}
}

2、不存在默认交互逻辑的组件(默认不可获焦):Text、Image等,通过将focusable设置为true将此类组件转换为可获焦状态后再获取焦点:

@Entry
@Component
struct Index {
controller: TextInputController = new TextInputController()

build() {
Row() {
TextInput({
placeholder: 'wait input...',
text: '',
controller: this.controller
})
Text('placeholder')
.focusable(true)
.defaultFocus(true)
}
}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值