bla*_*boy 82
这就是我的诀窍:
[self.titleField setSelectedTextRange:[self.titleField textRangeFromPosition:self.titleField.beginningOfDocument toPosition:self.titleField.endOfDocument]];
Run Code Online (Sandbox Code Playgroud)
相当难看,但它的工作原理,所以不会显示sharedMenuController!
要修复"每次只能工作"问题,请使用以下命令:
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
__strong __typeof(weakSelf) strongSelf = weakSelf;
UITextRange *range = [strongSelf textRangeFromPosition:strongSelf.beginningOfDocument toPosition:strongSelf.endOfDocument];
[strongSelf setSelectedTextRange:range];
});
Run Code Online (Sandbox Code Playgroud)
感谢Eric Baker(刚刚在这里评论编辑)
Ric*_*ick 52
事实证明,调用-selectAll:使用非零发件人显示菜单.用nil调用它会使它选择文本,但不显示菜单.
在我的错误报告之后我尝试了这个,它是从Apple回来的,建议我通过nil而不是self.
无需使用UIMenuController或其他选择API.
Jus*_*rls 48
我刚刚对此进行了测试以验证上面的Mirko评论,但是我的测试验证selectAll:了当它被发送到UITextField本身时确实选择了所有文本.
请注意,文本将立即被CUT |隐藏 COPY | PASTE操作,但对于您的问题,它正是用户点击"全选"开始时显示的内容.
我将采用的解决方案如下,请注意第二行将暂时隐藏CUT/COPY/PASTE对话框,而不会禁用它以进行显式用户选择
[_myTextField selectAll:self];
[UIMenuController sharedMenuController].menuVisible = NO;
Run Code Online (Sandbox Code Playgroud)
Ted*_*Ted 40
使用你需要的
[yourtextField becomeFirstResponder]; //puts cursor on text field
[yourtextField selectAll:nil]; //highlights text
[yourtextField selectAll:self]; //highlights text and shows menu(cut copy paste)
Run Code Online (Sandbox Code Playgroud)
迅速
选择以下所有文字UITextField:
textField.selectedTextRange = textField.textRangeFromPosition(textField.beginningOfDocument, toPosition: textField.endOfDocument)
Run Code Online (Sandbox Code Playgroud)
我的完整答案就在这里.
小智 7
这是我发现的最佳解决方案.没有sharedMenuController,它连续工作:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField performSelector:@selector(selectAll:) withObject:nil afterDelay:0.1];
}
Run Code Online (Sandbox Code Playgroud)