繁体   English   中英

如何确定UITextField的光标位置?

[英]How to determine the cursor position of a UITextField?

我有一个文本字段,该文本字段的格式始终为“ XX0000000XX”,X是字母,0是数字。 当用户键入时,我会根据需要输入数字还是字母来切换键盘。

直到用户将光标置于文本字段的中间进行编辑之前,此方法都可以正常工作。 如何确定UITextField中的光标位置?

我知道一个UITextView有一个selectedRange可以使用,但是我读过你不能强迫UITextView是单行输入吗? 即禁用多行文本。

巧妙地使用键盘。 我的直接想法是,也许您不应该允许用户首先移动光标。

这在iPhone UI中并非没有先例。 例如,电话键盘视图将用户限制为顺序输入。 我还发现此技术对于货币输入很有用。 基本上,任何具有非常严格的语法输入的地方都似乎是这种处理的候选对象。 可能适合您的情况。

不知道这是否是最好的方法,但是这是我的方法:

一个UITextField捕获输入,一个UILabel显示输入。 文本字段被隐藏,但被发送为FirstResponder以触发键盘。 当用户输入内容时,委托方法会执行必要的操作以格式化文本(如有必要,如使用货币),并更新UILabel,该UILabel将为用户提供有关其输入的反馈。

根据情况,您可能希望对UILabel进行样式设置,以使其清楚用户无法使用它,就像他们可以选择的文本字段一样,同时确保他们实际上是他们的输入。

在播放11个字符的情况下,我可以看到光标编辑可能会很有用。 尽管如此,电话号码通常仍在同一范围内,而我在“电话”应用程序中的顺序编辑器从来没有问题。

有一个UITextDelegate方法-textField:shouldChangeCharactersInRange:replacementString:这应该是您描述所需要的全部。 实施它以实施所需的任何格式设置规则。 您不必在乎光标在哪里,只需在乎所建议的更改范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM