2015-09-09 33 views
1

我的應用程序有兩個視圖,一個在屏幕的上半部分,另一個在屏幕的下半部分。上半部分視圖稱爲mainView,下半部分稱爲tableView。我在mainView底部的mainView中有一個UITextField。所以,我得到了tableView的高度和鍵盤之間的差異,所以我可以向上/向下移動mainView,使鍵盤直接在uitextfield下面。我在下面使用的代碼適用於iphone 4s和iphone 5,但是更大的代碼會在文本字段和鍵盤之間留下一點空白。我怎樣才能解決這個問題?如何在UITextField下正確使用鍵盤?

func keyboardShown(notification: NSNotification) { 
     let info = notification.userInfo! 
     let value: AnyObject = info[UIKeyboardFrameEndUserInfoKey]! 

     let rawFrame = value.CGRectValue 
     let keyboardFrameHeight = view.convertRect(rawFrame, fromView: nil).height 
     let bottomSpace = tableView.bounds.height 

     let spaceDifference = (keyboardFrameHeight - bottomSpace) 

     view.layoutIfNeeded() 
     self.mainViewProportionalHeight.constant -= spaceDifference 
     animLayout(0.5) 
    } 

爲了重申:

MAINVIEW =視圖

的tableView =視圖

的底半部的上半部分有附接到MAINVIEW的底部的UITextField,使mainview的底部= mainView的底部。基本上,我正在嘗試對齊鍵盤上方的mainView而沒有任何空格。

+0

設置一個斷點,是'keyboardFrameHeight'或'bottomSpace'以任何方式小數? –

+0

什麼是約束mainViewProportionalHeight?那麼這個白色空間是怎樣的? –

+0

都不是分數。 mainViewProportionalHeight是主視圖的比例高度(如果這還不夠清楚:P)常數會根據您設置的很多點向上/向下移動它。 「白色空間」(抱歉,不清楚)是鍵盤和主視圖底部(文本框)之間的空間。鍵盤和主視圖底部之間應該有0個空格。感謝評論!我無法弄清楚我的生活:) – acahreonn

回答

2

我發現解決您的問題的最簡單方法是使用CocoaPod,IQKeyboardManager。

你只需將它添加到您的podfile,然後運行吊艙安裝,它需要定位你的鍵盤正下方的任何文本字段在你的寫作服務。(甚至是那些鍵盤通常會覆蓋)

這裏的一個鏈接:https://cocoapods.org/?q=iqkeyboardmanager

+0

嘿,謝謝你的回覆!鍵盤和uitextfield之間的空白不會讓我感到困擾;我已經達到了我想要的,這是阻止鍵盤覆蓋文本框。不過,由於學術原因,我很好奇解決我的錯誤的方法。不過感謝您提供一個很酷的解決方案!我確定它會幫助看到這個的人:) – acahreonn

+1

哦,這很公平,我想知道是不是這種情況。如果你最終需要再次解決這個問題,我會強烈推薦IQKeyboardManager。這真的救了我很多麻煩。 –

+0

我聽說過關於cocoapod庫的很棒的東西,我會在掌握基礎知識之後確​​定看看它。 – acahreonn