用户长按textField会出现一个menu(UIMenuController),menuItem包括select和selectAll,选择select或selectAll会自动选中某些文字。内部实现其实非常简单,只需重写这两个函数即可:

- (void)select:(id)sender;
- (void)selectAll:(id)sender

代码实现如下:

- (void)selectAll:(id)sender{
    UITextPosition *beginingOfDoc=self.beginningOfDocument;
    UITextPosition *startPos = [self positionFromPosition:beginingOfDoc offset:0];
    
    UITextPosition *endPos = [self positionFromPosition:beginingOfDoc offset:self.text.length];
    
    UITextRange *selectionRange= [self textRangeFromPosition:startPos toPosition:endPos];
    [self setSelectedTextRange:selectionRange];
}

说明:textField设置选中文字是通过设置其selectedTextRange属性来实现的,因此这里使用setSelectedTextRange函数来选中textField的所有文本。此外,如果接下来要将选中的文本执行copy操作,唯一的办法就是根据选中文本的range(self.selectedTextRange)来将对应的文本放入黏贴板,而没有所谓的selectedText属性可以使用。