1

UITableView とともに UISearchBar (および SearchDisplayController) を備えた UIViewController があります。このビュー コントローラーに移動するとき、UISearchBar に自動フォーカスしたい (検索バーのテキスト フィールドにフォーカスしてキーボードを表示する)。すべてが使用するように言います

[searchBar becomeFirstResponder]

(searchBar が UISearchBar へのアウトレットであると仮定します)

これをviewDidLoadの最後に置きます:

- (void)viewDidLoad
{
    [super viewDidLoad];

    BOOL did = [searchBar becomeFirstResponder];

    [searchBar setText:@"donkey"];
}

変数didは 0 (フォーカスは発生しません) ですが、検索バーのテキストは正常に に変更されていdonkeyます。

私は何を間違っていますか?

ARC と最新の Xcode (4.3.2) で iOS 5 を使用しています。

4

4 に答える 4

9

動作しました。viewDidLoad または viewWillAppear ではなく、viewDidAppear に配置する必要がありました。

于 2012-06-13T17:34:46.637 に答える
3

コードを -(void)viewDidAppear; に追加します。

于 2013-02-05T15:39:09.243 に答える
2

METHOD becomeFirstResponder が mainThread で実行されるようにする必要があるため、次のようにします。

[xxx performSelectorOnMainThread:@selector(becomeFirstResponder) withObject:nil waitUntilDone:NO];
于 2015-01-04T10:13:55.787 に答える