9
- (void)textFieldDidBeginEditing:(UITextField *)textField {
    [textField selectAll:self];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;    
}

在上面, textField 选择正确,但是当我从键盘返回并连续第二次点击 textField 时,它不会选择文本。如果我没有连续选择它,或者我在从键盘返回之前取消选择文本,则该 textField 的下一个焦点会正确选择文本。

在上述情况下如何选择文本?

4

2 回答 2

10

我找到了一个完美的解决方案(在下一个运行循环中调用 selectAll):

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    [textField performSelector:@selector(selectAll:) withObject:textField afterDelay:0.f];
}
于 2013-05-23T08:28:09.397 回答
2

我使用 Grand Central Dispatch 解决了这个问题。[textField selectAll:self];您可以使用dispatch_async调用包装并dispatch_get_main_queue()作为第一个参数。

    dispatch_async(dispatch_get_main_queue()){
        // ... code you want to run on the main queue goes here
    }
于 2016-01-02T03:06:22.217 回答