【问题标题】:UITextField > force cursor to stay at the end of the fieldUITextField > 强制光标停留在字段的末尾
【发布时间】:2011-03-19 08:58:46
【问题描述】:

用户应该不能将 UITextField 的光标移动到输入的字符串中的其他位置。

我需要这个,因为我希望用户输入货币金额。这是通过让用户输入数字来完成的,这些数字将添加到金额的末尾,并且逗号将移动到末尾的第三个位置。

如何强制 UITextField 中的光标停留在输入字符串的末尾?

【问题讨论】:

  • 所以如果我输入“1,799,999.95”而我的意思是“1,599,999.95”,我将不得不删除几乎整个字符串并重新输入?

标签: iphone cocoa-touch uikit cursor uitextfield


【解决方案1】:

在您的UITextField 上放置一个UIButton。将IBAction 添加到按钮并让它调用UITextField.becomeFirstResponder()

这可以防止点击通过,光标可以被修改,但仍然允许用户点击视图并选择它。

【讨论】:

    【解决方案2】:

    我通过隐藏原始输入字段并在标签中显示格式化的值解决了这个问题。这可以防止用户更改光标位置。

    【讨论】:

      【解决方案3】:

      使用

      创建 UITextField 的子类
      -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { return NO; }
      

      禁用该字段上的所有手势。这意味着您以编程方式将该字段设置为 firstResponder。

      【讨论】:

        【解决方案4】:

        我认为你可以使用:

        - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
        

        只要给他正确的范围。

        【讨论】:

        • 如果我正确地理解了文档,这只会忽略中间某处添加的数字。但我想强制光标停留在字段的末尾。
        • 当用户写一个新字母时,你可以强制文本字段在任何特定位置打印它。
        猜你喜欢
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-14
        • 2014-12-04
        • 1970-01-01
        • 2014-10-09
        • 2012-01-03
        相关资源
        最近更新 更多