2011-10-27 47 views
3

我有一個應用程序,其中登錄屏幕通過在顯示鍵盤時調整主視圖的大小來移動用戶名/密碼字段。當應用程序從暫停狀態返回時隱藏鍵盤

問題是,如果我在鍵盤可見時暫停應用程序(單擊home按鈕),然後重新啓動應用程序,它將「重置」視圖大小(按照NIB),但鍵盤將仍然可見,這意味着「形式」的一部分被鍵盤隱藏。

有沒有人有任何建議,以最好的方式來隱藏鍵盤,每當應用程序從暫停狀態返回(我知道applicationDidBecomeActive被調用我的應用程序委託),或確保視圖保持調整大小?

在此先感謝!

+0

可能重複[如何從視圖中關閉鍵盤?](http://stackoverflow.com/questions/5014674/how-to-dismiss-the-keyboard-from-the-view) – millimoose

+0

不要認爲這是重複的。調用'resignFirstResponder'可能會做到這一點,如果控制權返回到應用程序和類似'viewWillAppear'的東西被調用。如果我的視圖控制器的任何方法在應用從暫停狀態返回時被調用,'resignFirstResponder'可以工作。我缺少的是在控制器的上下文中通知應用程序從暫停狀態返回的方式。 –

回答

3

訂閱UIApplicationDidEnterBackgroundNotification通知(通過addObserver:selector:name:object:選擇器NSNotificationCenter)並致電[element resignFirstResponder]

我不確定它是否會順利下滑,因爲鍵盤在隱藏時總是動畫,但至少它會完成工作。

3

我想你就可以做到這一點使用NSNotificationCenter

在您的視圖控制器,在viewWillAppear中調用:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWasResumed) name:UIApplicationWillEnterForegroundNotification object:nil]; 

和實施方法:

-(void) appWasResumed 
{ 
    [textField1 resignFirstResponder]; 
    //If you are changing positions of items, you might want to do that here too. 
} 

和我認爲其餘的應該自動處理。

如果它不會自動進行嘗試applicationDidBecomeActiveapplicationWillEnterForeground添加以下內容到AppDelegate中:

[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationWillEnterForegroundNotification object:nil]; 

我沒有用NSNotificationCenter很多,所以一些語法可能是錯誤的。查看我在頂部提供的鏈接以確認。

相關問題