2011-11-11 106 views
25

在爲我的iPad應用程序開發最新功能的過程中,我意識到新的iOS5鍵盤對接/拆分行爲造成了巨大的問題。我在鍵盤上使用了一個inputAccessoryView,其上的文本字段類似於Safari的在頁面上查找功能。我在可滾動的UIWebView上顯示鍵盤,因此,當鍵盤停靠時,我的麻煩來自縮小的UIWebview,並且在脫離連接時具有(大部分)全屏webview。有沒有人找到使用新的iOS5鍵盤事件的好方法?

我遇到的主要問題是,新的UIKeyboardWillChangeFrameNotification和UIKeyboardDidChangeFrameNotification通知與以前的API相差無幾,而且垃圾數據幾乎不可能理解鍵盤真的在做什麼在許多情況下。

以下任何一種鍵盤行爲都可以被識別出來,而不需要費力地檢查通知上回來的開始/結束幀?

  • 鍵盤太空站
  • 鍵盤碼頭
  • 鍵盤拆分/ Unsplits
  • 出塢鍵盤顯示
  • 出塢鍵盤隱藏
  • 視圖旋轉,而鍵盤是插接

我已經想出一些抽象來識別停靠或者停靠的幀屏幕外,但即使如此,我的代碼變得非常難以管理。如果你找到了更好的方法來做到這一點,請回答或評論。我希望我在這裏錯過了一些東西。謝謝。

+0

這實質上是我在這裏問:http://stackoverflow.com/q/7799421/18091(雖然你的問題更好) – titaniumdecoy

回答

4

事情不是要過時這一點。沒有任何重要的變化。如果鍵盤進入屏幕底部的停靠位置,您將收到「顯示」通知。如果它離開屏幕底部的停靠位置,您將收到「隱藏」通知。這到底發生了什麼的iOS 5

之前唯一的區別是,而不是讓對接的位置,因爲它被移離屏幕,它可能會離開停靠位置,因爲用戶脫開它。你仍然會得到一個「隱藏」,所以你可以將你的界面移回到它的基本位置。您不需要知道鍵盤現在是否被取消鎖定(儘管如果您真的想要的話,您可以發現它並非來自UIKeyboardDidChangeFrameNotification的離線屏幕)。你不需要知道的原因是,當鍵盤脫開/分離時,如果用戶需要看到某些東西,用戶可以主動地移動鍵盤。

因此,iOS 5之前的所有舊代碼都可以繼續正常工作。這一切真的很聰明...

+2

如果我沒有試圖讓我的接口做任何不同的事情,那麼是的,代碼仍然可以工作,不變。正如我在問題開始時所說的,我正在用鍵盤的輔助視圖進行此操作。這種輔助視圖至少在試圖模仿Safari的行爲時不會返回到屏幕的底部或消失;它沿着鍵盤在屏幕上。在很多情況下,使用現有的代碼並不能實現這一點,並且在很多情況下,出現了響應者問題。 – TahoeWolverine

+0

當我分開鍵盤時,我同時得到一個節目和一個隱藏。爲什麼是這樣? –

相關問題