我的文本字段总是格式为“XX0000000XX”,X是字母,0是数字。我在用户输入时切换键盘,具体取决于他们是否需要输入数字或字母。
这很好用,直到用户将光标定位在文本字段的中间进行编辑。如何确定UITextField中的光标位置?
我知道UITextView有一个可以使用的selectedRange,但我读过你不能强制UITextView是单行录入吗?即禁用多行文本。
答案 0 :(得分:0)
键盘上的巧妙位置。我的直接想法是,您可能不应该允许用户首先移动光标。
这在iPhone UI中并非没有先例。例如,电话键盘视图将用户限制为顺序输入。我还发现这种技术对货币输入很有用。基本上,具有非常严格语法的输入的任何地方似乎都是这种处理的候选者。可能适合您的情况。
不确定这是否是最好的方法,但这是我的方法:
用于捕获输入的UITextField和用于显示输入的UILabel。文本字段是隐藏的,但是发送到firstFirstResponder以触发键盘。在用户输入时,委托方法可以根据需要(如货币)对文本进行格式化,并更新UILabel,UILabel为用户提供输入反馈。
根据具体情况,您可能希望以这样的方式设置UILabel的样式,使用户无法像使用可选文本字段那样使用它,同时向他们保证它实际上是他们的输入。
在播放11个字符时,我可以看到光标编辑可能有用。尽管如此,电话号码通常在同一范围内,我在电话应用程序中的顺序编辑器也没有问题。
答案 1 :(得分:0)
有一个UITextDelegate方法-textField:shouldChangeCharactersInRange:replacementString:
,你应该只需要做你所描述的一切。实现它以强制执行您想要的任何格式规则。你不应该关心光标在哪里,只关心建议的变化范围。