2010-11-11 46 views
0

我有一個UIViewController,它有兩個文本字段inputAinputBinputA就像普通文本字段一樣工作,點擊它,鍵盤顯示出來,你可以鍵入。但inputB會觸發另一個視圖(將其視爲按鈕)。第二個視圖MyView具有自定義彈出視圖,該視圖動畫顯示在鍵盤上。 MyView的彈出窗口最初的alpha爲0,我設置了通知,當鍵盤顯示彈出窗口的視圖alpha設置爲1.iPhone - 用鍵盤提供的UIView - 工程,但有bug

這很好,但我有一個「bug」,其中當鍵盤當前顯示,因爲用戶先輕敲inputA,然後他們點擊inputB,它會觸發MyView,但由於鍵盤已顯示通知未發送,因此無法將彈出式alpha更改爲1.

因此,問題:解決這個問題的乾淨方法是什麼?我希望視圖與鍵盤一起出現,但是如果它已經存在,則只需發送它。

有沒有辦法測試鍵盤是否已經顯示?我想在每次鍵盤顯示/隱藏在這兩個視圖中時都不設置布爾值。

回答

0

嘗試以下

如果([inputA isFirstResponder] || [inputB isFirstResponder]){

//鍵盤被顯示

}否則{

//鍵盤不是顯示

}

+0

問題是檢查需要h appen在不同的視圖中,所以inputA和inputB不再是局部變量來檢查。但我想我可以用我的另一種觀點來做到這一點。做一個計時器檢查,看看它是否是第一響應者(它始終是因爲它在loadView中),然後觸發該功能來取消隱藏它。只是希望有一個更清潔的方式。 – RyanJM 2010-11-11 14:17:28

+0

將父對象傳遞給您的新視圖。然後,您可以毫無困難地訪問父類中的元素。 – 2010-11-12 03:50:18