将UITextField限制为特定数字

时间:2014-07-29 16:04:03

标签: ios xamarin.ios uitextfield xamarin

我有一个UITextField,我想限制用户只输入介于0.0到24.00之间的十进制数字。
主要思想是用户在该字段中输入小时数。所以一天不能超过24小时。

是否可以在2位数后自动输入小数?因此,当用户输入" 18"例如,小数"。"自动显示。

现在,我限制用户只输入完整的小时数。所以他们只能输入2位数。我真的需要改变它。这就是我现在所拥有的。

txtFld_Hours.ShouldChangeCharacters = (textField, range, replacementString) => {
    var newLength = textField.Text.Length + replacementString.Length - range.Length;
    return newLength <= 2;
};

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

当然,一切皆有可能,但与其他人提到的一样,对时间选择器使用UIDatePicker控件会更好(它甚至会在iOS上为您处理本地化,因为有些国家/地区会使用12小时的时间例如,使用AM / PM标记)。甚至MonoTouch文档也说平台之间存在差异,您应该以只为每个平台编写UI代码差异的方式构建代码,但所有其他代码对所有平台都是通用的。

但是如果你必须自己做这件事,这需要一些更复杂的解决方案,所以我们不能直接为你写这个。通过 GitHub 搜索某些代码示例,我确信您可以轻松地将 Objective-C 转换为 MonoTouch ,因为它应该是API的1:1映射。

以下是关于从哪里开始的一些事项:

  • 请参阅IUITextFieldDelegate界面文档(您已了解的)
  • 使用将处理点的代码更新ShouldBeginEditing方法。
    • 当达到2个字符时,以编程方式添加点,并使用SelectedTextRange属性将光标移动到点后面。
    • 文本的最大长度现在应为5。
    • 当文本长度为3并且用户点击退格时,处理自动删除点。

在此之后,您应该拥有自己的UITextField自定义小时选择器。