1

我有一个带有 UISearchBar(和 SearchDisplayController)的 UIViewController 以及一个 UITableView。当导航到这个视图控制器时,我想自动聚焦在 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

得到它的工作。只需将其放在 viewDidAppear 中,而不是 viewDidLoad 或 viewWillAppear 中。

于 2012-06-13T17:34:46.637 回答
3

将您的代码添加到 -(void)viewDidAppear;

于 2013-02-05T15:39:09.243 回答
2

这对我有用:

[window makeKeyAndVisible]
于 2014-02-19T22:22:10.447 回答
2

我们必须确保 METHOD becomeFirstResponder 在 mainThread 上执行,所以让它像:

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