2012-06-08 91 views
3

我在做什麼:我可以移動UIKeyboard的框架嗎?

我使用新Facebook和Path應用程序使用的相同類型的側面菜單。以下是我正在使用的代碼:https://github.com/pkluz/ZUUIRevealController(點擊圖片的鏈接)。

基本上,在我的'主'視圖中,總是顯示鍵盤。當我「展示」側視圖時,我希望鍵盤可以與主視圖的其餘部分一起滑動,就好像鍵盤連接到主視圖一樣。目前,它只是覆蓋其他一切。

-

我應該甚至試圖找出一種方法來實現這一目標嗎?或者鍵盤的框架鎖得很緊?

更好的是,如果你可以解釋一種方式來做到這一點,使用GitHub代碼我基於 - 我肯定會給予賞金(儘管如此,還不能設置它,因爲問題需要幾天)!

回答

6

解決......實際上有一個非常乾淨的方法來做到這一點。

UIView * activeKeyboard = activeInputView.inputAccessoryView.superview; 
activeKeyboard.frame = newFrame; 

就這麼簡單。沒有未記錄的API調用,但仍然穿過我的手指,它通過審批過程。

記住這個代碼僅僅是最重要的一點,還有它周圍的其他等代碼,以使這一切發生 - 但不應該太難搞清楚,如果你需要達到同樣的:)

+0

我試圖用ZUUIRevealController(現在PKRevealController)達到相同的效果。你能夠更多地描述你的周邊代碼嗎?我的解決方案涉及創建一個inputAccessoryView來訪問superview(鍵盤)。然後,我從其超級視圖中刪除鍵盤,然後將其作爲子視圖添加到我的主視圖中...但這看起來有點冒險..我根本不搞亂幀。 – Jon

+0

@Jon這就是我所做的。我對ZUUIRevealController使用了類似的控件。從記憶來看,這就是它的關鍵所在 - 最難的部分就是讓一切完美運作,比如旋轉等,同時看起來不錯。沒有什麼不能做的,沒有棘手的黑客或任何東西 - 但我會把那部分留給你:) –

2

這是可能的,我已經嘗試過類似的東西來複制消息應用程序的行爲(用戶可以通過滾動消息列表拖動鍵盤)。

也就是說,沒有官方認可的方式來做到這一點,所以任何解決方案都可能是黑客行爲,可能會破壞操作系統更新。

我這樣做的方式基本上是找到鍵盤所在的UIWindow並修改其transform屬性。鍵盤窗口目前使用私人類UITextEffectsWindow,但這可能會隨時更改,所以我不會依賴它。即使鍵盤處於您可以訪問的窗口(通過[[UIApplication sharedApplication] windows])的事實也沒有記錄在任何地方,並且可能會發生變化。

我不確定我是否會在發佈的應用程序中做這樣的事情。如果你嘗試,你必須編碼非常防守,以確保它不會中斷,如果鍵盤的實現細節在未來發生變化。

相關問題