Iphone 如何确定UITextField的光标位置?

Iphone 如何确定UITextField的光标位置?,iphone,objective-c,uitextfield,Iphone,Objective C,Uitextfield,我有一个文本字段,它的格式总是“XX0000000XX”,X是一个字母,0是一个数字。我在用户打字时切换键盘,这取决于他们是否需要输入数字或字母 这很好,直到用户将光标定位在文本字段的中间以进行编辑。如何确定UITextField中的光标位置 我知道UITextView有一个可使用的selectedRange,但我已经读到,您不能强制UITextView成为单行条目?i、 e.禁用多行文本。使用键盘的智能位。我的直接想法是,也许您首先不应该允许用户移动光标 这在iPhone用户界面中并非没有先例

我有一个文本字段,它的格式总是“XX0000000XX”,X是一个字母,0是一个数字。我在用户打字时切换键盘,这取决于他们是否需要输入数字或字母

这很好,直到用户将光标定位在文本字段的中间以进行编辑。如何确定UITextField中的光标位置


我知道UITextView有一个可使用的selectedRange,但我已经读到,您不能强制UITextView成为单行条目?i、 e.禁用多行文本。

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

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

不确定这是否是最好的方法,但我是这样做的:

用于捕获输入的UIExtField和用于显示输入的UILabel。文本字段是隐藏的,但作为第一响应程序发送以触发键盘。当用户输入时,委托方法会在必要时对文本进行格式化(与货币一样),并更新UILabel,它为用户提供输入反馈

根据情况,您可能希望以这样一种方式设置UILabel的样式,即用户不能像使用可选文本字段那样使用它,同时向他们保证它实际上是他们的输入


游戏中有11个角色,我可以看到光标编辑是多么有用。尽管如此,电话号码通常在相同的范围内,我在电话应用程序中的顺序编辑器从来没有问题。

有一个UITextDelegate方法
-textField:shouldChangeCharactersRange:replacementString:
,这应该是您所需要做的一切。实现它以强制执行您想要的任何格式规则。您不必关心光标在哪里,只需关心建议的更改范围。

以下两个答案都不适合这种情况(尽管它们都有一些优点-谢谢!)。我已经向苹果发送了一个错误,重新检测光标位置,客户很乐意以现在的方式运行它。呸。如果你有一个可以检测光标位置的解决方案,一定要告诉我。请告诉我们苹果什么时候会对这个错误做出响应。;)