我可以在 UITextField 中选择特定的文本块吗?
我的 iPhone 应用程序中有一个 UITextField。我知道如何使文本字段选择其所有文本,但如何更改选择?假设我想选择最后 5 个字符或特定范围的字符,这可能吗?如果没有,我可以移动标记选择的开始和结束的线,就像用户拖动它们一样吗?
I have a UITextField in my iPhone app. I know how to make the text field select all of its text, but how can change the selection? Say I wanted to select the last 5 characters, or a specific range of characters, is that possible? if not, can I move the lines marking the beginning and end of the selection, as if the user is dragging them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
对于 UITextField,你不能这样做。但是,如果您看到标题,则您有 _selectedRange 和其他内容,如果您向其中添加一些类别,则可能会使用它们;)
iOS5 及更高版本的更新:
现在 UITextField 和 UITextView 符合 UITextInput 协议,因此可以:)
选择最后 5 个字符在插入符号之前会是这样的:
With UITextField, you cannot. But if you see the headers, you have _selectedRange and others that might be used if you add some categories to it ;)
Update for iOS5 and above :
Now UITextField and UITextView conform to UITextInput protocol so it is possible :)
Selecting the last 5 characters before the caret would be like this:
要选择特定范围的字符,您可以在 iOS 5+ 中执行类似的操作,
因为
UITextField
和其他 UIKit 元素都有自己的私有子类UITextPosition
和UITextRange
您不能直接创建新值,但您可以使用文本字段通过对文本开头或结尾的引用以及整数偏移量来创建新值。您还可以执行相反的操作来获取当前选择的起点和终点的整数表示:
这是一个类别,它添加了使用
NSRange
处理选择的方法。 https://gist.github.com/4463233To select a specific range of characters you can do something like this in iOS 5+
Since
UITextField
s and other UIKit elements have their own private subclasses ofUITextPosition
andUITextRange
you can not create new values directly, but you can use the text field to create them for you from a reference to the beginning or end of the text and an integer offset.You can also do the reverse to get integer representations of the start and end points of the current selection:
Here is a category which adds methods to handle selections using
NSRange
s. https://gist.github.com/4463233要选择不带文件扩展名的文件名,请使用以下命令:
To select the name of a file without the file extension, use this:
这些都对我有用:
和:
但前提是文本字段是第一响应者。 (换句话说,仅当键盘显示时。)因此,您需要在任一选择方法之前加上以下内容:
如果您希望文本显示为选中状态。
These both work for me:
and:
but only if the text field is the first responder. (In other words, only if the keyboard is showing.) So, you need to precede either of the select methods with this:
if you want the text to appear selected.
只是对已接受答案的一小部分补充。在 iOS 5 中,当 UITextView 的文本长度为 0(没有文本)时,以下行会使我的应用程序崩溃:
一个小的解决方法是添加
length == 0
检查,如下所示:Just a small addition to the accepted answer. In iOS 5, the following line crashes my app when UITextView's text length is 0 (has no text):
A small workaround is to add a
length == 0
check like:Swift 5.0
这是我从
Panda.txt
中选择文件名Panda
的方法Swift 5.0
here is how I selecte file name
Panda
fromPanda.txt
Swift
选择最后 5 个字符:
选择任意范围:
我的完整答案在此处。
Swift
Select the last 5 characters:
Select an arbitrary range:
My full answer is here.