Cocoa touch 如何";插入“;文本输入到UITextField?

Cocoa touch 如何";插入“;文本输入到UITextField?,cocoa-touch,uikit,uitextfield,Cocoa Touch,Uikit,Uitextfield,我正在尝试将文本插入UITextField。但所谓插入,我的意思是用新的字符替换光标位置的字符(windows上的插入按钮功能) 如果手动替换传入字符串并执行setText(将NO返回到shouldchangeCharactersRange方法),光标将移动到textField的末尾,您可以像以前一样替换文本并恢复插入符号的位置。请注意,这只能使用UITextView而不是UITextField(除非您必须使用UITextField,否则这将需要更多不合理的工作): 您必须注意,检查新文本的se

我正在尝试将文本插入
UITextField
。但所谓插入,我的意思是用新的字符替换光标位置的字符(windows上的插入按钮功能)


如果手动替换传入字符串并执行
setText
(将
NO
返回到
shouldchangeCharactersRange
方法),光标将移动到
textField
的末尾,您可以像以前一样替换文本并恢复插入符号的位置。请注意,这只能使用
UITextView
而不是
UITextField
(除非您必须使用
UITextField
,否则这将需要更多不合理的工作):

您必须注意,检查新文本的
selectionRange
变量的有效性是一个好主意-确保光标位置不大于新文本长度。

对于UITextField(iOS 3.2+),请尝试:


但是
UITextField
没有
selectedtextange
属性。只有
UITextView
具有
selectedRange
uitextput
协议根据需要定义此属性,并且
UITextField
符合
uitextput
协议,该协议使其支持
selectedtemrange
抱歉,但是如果你可以用XCode编写3行代码,你应该已经看到它不起作用了。你是对的,ugur,解决方案并不像看上去那么简单。经过进一步的研究,看起来UITextRange是一种UITextRange委托必须实现的“抽象”类。这意味着UITextField有自己的实现。从技术上讲,您可以将UITextField子类化,然后手动处理选择,但这需要花费大量精力来实现。相反,我将使用
UITextView
,它允许使用原语
NSRange
设置选择范围-在这种情况下,我的示例将起作用。很抱歉,如果这不能完全按照你想要的方式回答你的问题。嗯,谢谢你的帮助。我想我应该使用UITextView。我只是想用UITextField的方式,但似乎没有理由这么做。
NSRange selectionRange = myTextView.selectedRange;
myTextView.text = myNewText;
myTextView.selectedRange = selectionRange;
[textField replaceRange:[textField selectedTextRange] withText:toInsert];