在UITextField的光标位置插入string
我在UITableView中有几个UITextFields。 用户应该只能插入数字和点。 为此,我将键盘types设置为UIKeyboardTypeNumberPad,并在左下angular添加了一个“。”button。 每次按下button,都会调用一个函数。 这个函数应该在当前的光标位置插入一个点,但是这是个问题:UITextField没有一个selectedRange属性,所以我不能获取当前的光标位置。 有谁知道如何解决这个问题,或者有没有其他的方法来做到这一点? 谢谢。
我终于find了这个问题的解决scheme! 您可以将所需的文本插入到系统粘贴板中,然后将其粘贴到当前的光标位置:
[myTextField paste:self]
我在这个人的博客上find了解决scheme:
http://dev.ragfield.com/2009/09/insert-text-at-current-cursor-location.html
粘贴function是特定于OS V3.0的,但是我已经testing过了,它对于我自定义的键盘来说工作的很好。
更新:根据Jasarien的评论,最好先保存粘贴板内容,然后恢复。 为了方便,这里是我的代码:
// Get a reference to the system pasteboard UIPasteboard* lPasteBoard = [UIPasteboard generalPasteboard]; // Save the current pasteboard contents so we can restore them later NSArray* lPasteBoardItems = [lPasteBoard.items copy]; // Update the system pasteboard with my string lPasteBoard.string = @"-"; // Paste the pasteboard contents at current cursor location [myUIField paste:self]; // Restore original pasteboard contents lPasteBoard.items = lPasteBoardItems; [lPasteBoardItems release];
- (void)insertText:(NSString *)text
在iOS 3.2及更高版本中可用。
现在有一个奇妙的数字键盘types的键盘,包括一个小数点,没有必要的configuration,除了设置(不在IB中,还没有一个选项) UITextField
的keyboardType
属性到UIKeyboardStyleDecimalPad
,如下所示:
textField.keyboardType = UIKeyboardTypeDecimalPad;
这样做的所有花式的东西,你一直试图自动执行。
如果你想创build文本字段,让你input小数位可能我build议你宁愿修复小数点到一定的精度,并允许用户input数字如下:
假设你的精度是2个小数点:
start: value is 0.00 user enters 1: value is 0.01 user enters 2: value is 0.12 user enters 3: value is 1.23 user enters 4: value is 12.34
请参阅使用小数点input数值的最佳方法是什么? 为货币类似的解决scheme。
这是一个比创build自定义键盘更简单的解决scheme,并处理该方法呈现的所有细微差别。 但是,如果您需要可变长度精度,那么这种方法可能会更好地适应您。
在Swift中
这将插入当前光标位置的文本。
textField.insertText("Hello")
关于使用光标位置的完整答案在这里 。
按下button时,以stringforms读取文本字段的值。 编辑string,然后将该字段的值设置为新string。