2012-06-13 15 views
1

我有UISearchBar(和SearchDisplayController)UITableView與UIViewController。在導航到此視圖控制器時,我想自動對焦UISearchBar(調出鍵盤,焦點位於搜索欄中的文本字段)。一切說,使用UISearchBar becomeFirstResponder返回0,但有有效的引用UISearchBar

[searchBar becomeFirstResponder] 

(假設搜索欄是出口到的UISearchBar)

我把這個在viewDidLoad中的末尾:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    BOOL did = [searchBar becomeFirstResponder]; 

    [searchBar setText:@"donkey"]; 
} 

變量did是0(和聚焦沒有按」不會發生),但搜索欄的文本已成功更改爲donkey

我在做什麼錯?

我使用iOS 5與ARC和最新的Xcode(4.3.2)。

+0

BOOL做= [self.searchDisplayController.searchBar becomeFirstResponder]並設置代表 – Deepesh

+0

你是什麼意思設置代表?我是否需要實施回撥?嘗試在searchBarShouldBeginEditing中返回YES:但那不起作用。不明顯,我需要執行哪一個。謝謝 –

+0

順便說一句,代表已經設置爲UISearchBar和搜索顯示控制器的UIViewController。 –

回答

8

得到它的工作。只需要將它放在viewDidAppear中而不是viewDidLoad或viewWillAppear中。

3

將您的代碼添加到 - (void)viewDidAppear;

2

這爲我工作:

[window makeKeyAndVisible] 
2

我們必須確保方法becomeFirstResponder上mainThread 進行這樣使它像:

[xxx performSelectorOnMainThread:@selector(becomeFirstResponder) withObject:nil waitUntilDone:NO];