2011-06-22 67 views
3

我正在研究iPad應用程序。在其中的一個意見,我有一個子視圖出現和消失在按鈕點擊事件。子視圖包含UITextView。默認情況下,我使它成爲第一響應者,以便在出現視圖時立即出現鍵盤。當觸發UIKeyboardWillHideNotification時,子視圖也消失,即鍵盤被隱藏。旋轉鍵盤隱藏

現在,問題是,只要應用程序被旋轉,UIKeyboardWillHideNotification被系統觸發,這反過來使子視圖消失。我希望鍵盤保持在屏幕上。

這是怎麼回事,我該如何解決這個問題!?

注意:視圖和子視圖都有單獨的視圖控制器。在子視圖的視圖控制器類中接收到UIKeyboardWillHideNotification。

回答

4

您可以在shouldAutoRotate方法中聲明一個BOOL變量,並在調用它時設置該變量,然後在選擇器方法中顯示和隱藏子視圖,如果天氣視圖旋轉或不旋轉,則可以使用簡單條件。

這樣的:

if(viewRotated) 
{ 
    subView.hidden = YES; 
} 
viewRotated = NO; 

編輯部分:
我不知道什麼在此代碼怎麼回事,但它在我的應用程序誰的iPad編碼是由我的朋友做了一個完美的工作。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)) 
    { 
     [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(keyboardWillShow:) 
                name:UIKeyboardWillShowNotification 
                object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(keyboardWillHide:) 
                name:UIKeyboardWillShowNotification 
                object:nil]; 
    } 
    else 
    { 

     [[NSNotificationCenter defaultCenter] removeObserver:self 
                 name:UIKeyboardWillShowNotification 
                 object:nil]; 
     [[NSNotificationCenter defaultCenter] removeObserver:self 
                 name:UIKeyboardWillShowNotification 
                 object:nil]; 
    } 
    return YES; 
} 

,您可以重新添加通知,如果你的UIKeyboardWillHideNotification不是由這種方法再添加這些通知解僱。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
+0

我錯過了一個小細節...我的視圖和子視圖都有獨立的視圖控制器。在子視圖的視圖控制器類中接收到UIKeyboardWillHideNotification。子視圖不會收到輪換通知。在其他任何事情之前都會收到UIKeyboardWillHideNotification,這對我來說看起來並不正常。旋轉不應該觸發UIKeyboardWillHideNotification。還是呢? – Mustafa

+0

檢查我的答案... – Robin

1

您可以使用BOOL變量來記錄它是否正在旋轉。那麼當它旋轉時你什麼都不能做。