我正在创建一个允许用户输入日期的文本字段,并且我想显示所需的格式:mm-dd-yyyy
。当他们输入时,它应该用他们输入的数字替换格式。例如,如果他们输入 125
,则应类似于:12-5d-yyyy
。
我已经能够实现此功能(使用 textField:shouldChangeCharactersInRange:replacementString:
方法)。但有两个问题:
当我更新文本字段以显示格式以及他们输入的内容(通过直接设置
textField.text
)时,光标会转到插入文本的末尾。例如,它当前看起来像:12-30-yyyy|
(其中|
是光标),但我希望它看起来像12-30- |yyyy
。 那么我怎样才能将光标放在他们上次输入的位置?如果用户按退格键或删除键,我无法确定删除发生的位置。我知道确定他们按下退格键或删除键的唯一方法如下:
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/