21

我有一個簡單的UIViewController和一個UISearchBar,當視圖加載時我希望讓搜索欄馬上成爲第一響應者,以便鍵盤正在顯示,並且他們可以開始輸入查詢權限遠。我試圖做它viewWillAppear像下面沒有任何的運氣:查看加載時製作UISearchBar第一響應者

- (void)viewWillAppear:(BOOL)animated 
{ 
    [productSearchBar becomeFirstResponder]; 
    [super viewWillAppear:animated]; 
} 

難道還有其他我應該呼籲UISearchBarbecomeFirstResponder或者我應該是別的完全調用什麼地方?

回答

34

將此移至-viewDidAppear,應該沒問題。 -becomeFirstResponder拉起鍵盤(正如你注意到的那樣),你不應該在屏幕上做動畫。你可以得到奇怪的互動。

如果根本沒有做任何事情,那麼幾乎可以肯定productSearchBar是一個IBOutlet,你忘記了將它綁定到Interface Builder中的UISearchBar。這是UI中「沒有任何事情發生」的第一個原因。

請注意,您不應該以這種方式訪問​​您的ivars;你應該把它作爲一個財產,並只提及self.productSearchBar。蘋果終於在其Memory Management of Nib Objects中發佈了正確的解釋。切勿在訪問器或-dealloc之外訪問您的ivars。此規則將爲您節省數小時的調試時間。

+0

感謝羅布,這個伎倆。內存管理上的鏈接也非常有幫助,我會解決這個問題。 – 2010-02-16 02:12:44

+0

移至-viewDidAppear作品 – malhal 2012-06-30 10:47:31

+0

非常感謝您爲我工作... – KSR 2016-10-03 06:33:40

相關問題