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];