iphone - 如何确定 UITextField 中删除的位置

标签 iphone objective-c ios uitextfield uitextfielddelegate

我正在创建一个允许用户输入日期的文本字段,并且我想显示所需的格式:mm-dd-yyyy。当他们输入时,它应该用他们输入的数字替换格式。例如,如果他们输入 125,则应类似于:12-5d-yyyy

我已经能够实现此功能(使用 textField:shouldChangeCharactersInRange:replacementString: 方法)。但有两个问题:

  1. 当我更新文本字段以显示格式以及他们输入的内容(通过直接设置 textField.text)时,光标会转到插入文本的末尾。例如,它当前看起来像: 12-30-yyyy| (其中 | 是光标),但我希望它看起来像 12-30- |yyyy那么我怎样才能将光标放在他们上次输入的位置?

  2. 如果用户按退格键或删除键,我无法确定删除发生的位置。我知道确定他们按下退格键或删除键的唯一方法如下:BOOL thisIsBackspace = ([string length] == 0)(其中 string 是 replacementString: 的值) code>。但这并没有告诉我它发生在哪里。那么我如何确定 UITextField 中发生删除的位置?

最佳答案

使用 UIDatePicker 是最佳选择。除此之外...

在 textField:shouldChangeCharactersInRange 中:范围参数将告诉您实际更改发生在字段中的哪个位置。

您还可以使用 stringByReplacingCharactersInRange 在编辑后创建字段的值。然后您可以使用它来比较并找到他们编辑的位置。

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string];

    // Now you can compare text and textField.text and find where they are different.

    return YES;
}

关于iphone - 如何确定 UITextField 中删除的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9116784/

相关文章:

ios - 使用 Parse 查询效率

ios - iPhone 和 iPad 设备之间的 UIWindow 方向不一致?

ios - SiriKit 可以用来点咖啡吗?

苹果手机 : UITableView Header row repeating after 6 rows

iphone - 我的 View 显示 y20,尽管其框架设置为 y=0。旋转后它会恢复到 y=0

ios - 用NSTimer替换usleep吗?

iphone - 警告 : XXXX has different visibility (default) in YYYY and (hidden) in ZZZZ

ios - 使用 Core Animation 图层绘制圆锥形或弧形渐变

ios - 键盘重叠时向上移动 UITextField

html - 如何在 webview 上像 ios 中的 flash 电影一样显示图像的混洗?