我希望文本字段自动指向文本的末尾,一旦用户点击它。这在以前的setSelection中是有效的,但由于某种原因它停止了工作。现在,光标指向用户单击的任何位置。
HMTL:
<TextField text="the cursor should point at the end when clicked" (focus)="onFocus($event.object)"> </TextField>
TS:
public onFocus(textfield): void {
textfield.android.setSelection(textfield.text.length)
}
如果我把它包装在超时中,它可以工作,但它在光标移动之前闪烁,这让我很不满意。我还做了一个playground example
提前感谢您的帮助!
发布于 2019-05-23 06:24:50
好吧,我找到了一个解决方案。这是一个小技巧,但它对我来说很有用。setTimeout的主要不同之处在于,在移动光标之前不会“闪烁”。
好的,所以我的解决方案是:我在文本字段中使用一个条件css类,这取决于文本字段是否被聚焦。这会导致一旦文本字段准备就绪,生命周期钩子就会再次运行(至少我认为是这样)。
下面是我的代码: HTML:
<TextField [class.default-padding]="isFocused" text="the cursor should point at the end when clicked" (focus)="onFocus($event.object)" (blur)="onBlur()"> </TextField>
CSS:
.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:
private isFocused = false
public onFocus(textfield): void {
this.isFocused = true
textfield.android.setSelection(textfield.text.length)
}
public onBlur(): void {
this.isFocused = false
}
发布于 2019-05-23 01:35:09
它看起来像预期的那样工作。记住,在Android上,焦点是当光标放在TextField上时。如果您按back按钮隐藏键盘,并在TextField上的任意位置单击以再次显示键盘,则不会再次触发焦点事件。
当我点击TextField时,它会将光标指向TextField的末尾,如果我再次点击相同的TextField,它将不会。但如果我点击第二个TextField,那么它应该会像预期的那样工作,因为现在焦点从第一个TextField转移到第二个。
如果您仍然有问题,请分享您的设备操作系统版本,并可能显示问题的GIF。
https://stackoverflow.com/questions/56262084
复制相似问题