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

上記では、textFieldは正しく選択されていますが、キーボードから戻ってtextFieldを2回連続してタップすると、テキストが選択されません。連続して選択しない場合、またはキーボードから戻る前にテキストの選択を解除した場合、その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

GrandCentralDispatchを使用してこの問題を解決しました。最初のパラメーターとして、呼び出しでラップすることができ[textField selectAll:self];ます。dispatch_asyncdispatch_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 に答える