首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将光标移动到TextField -本机脚本的末尾

将光标移动到TextField -本机脚本的末尾
EN

Stack Overflow用户
提问于 2019-05-23 01:28:54
回答 2查看 1.3K关注 0票数 2

我希望文本字段自动指向文本的末尾,一旦用户点击它。这在以前的setSelection中是有效的,但由于某种原因它停止了工作。现在,光标指向用户单击的任何位置。

HMTL:

代码语言:javascript
复制
<TextField text="the cursor should point at the end when clicked" (focus)="onFocus($event.object)"> </TextField>

TS:

代码语言:javascript
复制
public onFocus(textfield): void {
   textfield.android.setSelection(textfield.text.length)
}

如果我把它包装在超时中,它可以工作,但它在光标移动之前闪烁,这让我很不满意。我还做了一个playground example

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-23 06:24:50

好吧,我找到了一个解决方案。这是一个小技巧,但它对我来说很有用。setTimeout的主要不同之处在于,在移动光标之前不会“闪烁”。

好的,所以我的解决方案是:我在文本字段中使用一个条件css类,这取决于文本字段是否被聚焦。这会导致一旦文本字段准备就绪,生命周期钩子就会再次运行(至少我认为是这样)。

下面是我的代码: HTML:

代码语言:javascript
复制
<TextField [class.default-padding]="isFocused" text="the cursor should point at the end when clicked" (focus)="onFocus($event.object)" (blur)="onBlur()"> </TextField>

CSS:

代码语言:javascript
复制
.default-padding {
/* This is just a dummy value. You can use any other padding or margin or
 anything that will cause the hooks to re-render*/
padding-right: 0;

}

TS:

代码语言:javascript
复制
private isFocused = false

public onFocus(textfield): void {
    this.isFocused = true
    textfield.android.setSelection(textfield.text.length)
}

public onBlur(): void {
    this.isFocused = false
}

这是我的updated playground example

票数 1
EN

Stack Overflow用户

发布于 2019-05-23 01:35:09

它看起来像预期的那样工作。记住,在Android上,焦点是当光标放在TextField上时。如果您按back按钮隐藏键盘,并在TextField上的任意位置单击以再次显示键盘,则不会再次触发焦点事件。

当我点击TextField时,它会将光标指向TextField的末尾,如果我再次点击相同的TextField,它将不会。但如果我点击第二个TextField,那么它应该会像预期的那样工作,因为现在焦点从第一个TextField转移到第二个。

如果您仍然有问题,请分享您的设备操作系统版本,并可能显示问题的GIF。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56262084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档