HarmonyOS TextInput组件在页面跳转并返回后会自动获得焦点

操作步骤:

页面中有textinput输入框的场景下

1、router跳转另一个页面。

2、从另一个页面侧滑返回。

  1. 此时TextInput控件会自动获得焦点并弹出键盘。

预期效果:TextInput不会自动获得焦点,键盘也不会自动弹出。

HarmonyOS
17h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

建议参考下面两种实现方式:

1、让页面其他可获焦组件默认获焦。

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

可以使用focusControl.requestFocus('BBB')方法来使设了BBB的组件获焦点,但是必须要在组件创建之后才能使组件获取到焦点。对于back回目标页面时不会触发aboutToAppear,可以使用onPageShow,在onPageShow里面设置0延时的回调,确保焦点生效。

两个页面跳转可以使用.defaultFocus(true)来设置组件为页面的默认焦点。

示例代码:

import prompt from '@ohos.prompt'
import router from '@ohos.router';
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  @State isboole:boolean=true;
  onPageShow(){
    setTimeout(() => {
      let res=focusControl.requestFocus('BBB')
      if (res) {
        prompt.showToast({message: 'Request success'})
      } else {
        prompt.showToast({message: 'Request failed'})
      }
    }, 0)
  }
  build() {
    Row() {
      Column() {
        Text(this.message)
          .id('1sa')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Button('我会获取焦点')
          .key('BBB')
        TextInput({ placeholder: 'AAAAA' })
          .id('AAAA')
          .type(InputType.Normal)
        Button('点击焦点转移')
          .onClick(()=>{
            let res=focusControl.requestFocus('BBB')
            if (res) {
              prompt.showToast({message: 'Request success'})
            } else {
              prompt.showToast({message: 'Request failed'})
            }
          })
        Button('点击获取焦点')
          .onClick(()=>{
            this.isboole=true
            sendEventByKey("AAAA", 10, "") // 向id为"AAAA"的组件发送点击事件
          })
        Button('点击跳转页面')
          .onClick(()=>{
            router.pushUrl({url:'pages/Second'})
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

2、设置textinput组件默认不可获焦。设置.enableKeyboardOnFocus(false)可以在页面进入后不弹出键盘。

分享
微博
QQ
微信
回复
14h前
相关问题
TextInput如何取消自动获得焦点
607浏览 • 1回复 待解决
如何监听TextInput是否获得焦点
1948浏览 • 1回复 待解决
HarmonyOS TextInput自动获取焦点问题
113浏览 • 1回复 待解决
TextInput组件获取焦点的几种场景
2715浏览 • 1回复 待解决
HarmonyOS TextInput焦点问题
421浏览 • 1回复 待解决
HarmonyOS TextInput无法取消焦点
339浏览 • 1回复 待解决
HarmonyOS TextInput 取消默认焦点
552浏览 • 1回复 待解决
【ets】switch开关打开后会自动关闭
3462浏览 • 1回复 待解决
HarmonyOS 子窗口跳转页面返回问题
290浏览 • 1回复 待解决