2015-07-19 136 views
1

當容器視圖彈出時,我有一個UITextField在容器視圖中消失。在同一個容器視圖中是一個UICollectionView,其自定義單元格包含一個UITextField,並且鍵盤對它們工作正常。當UITextField彈出鍵盤時,UIView消失

我在動畫函數中打印出容器視圖的框架,該框架由keyboardWillShow調用,並且容器視圖的框架對於兩種情況都是相同的,因此它看起來像容器視圖剛好消失(而不是「未移動」正如我所想)當選擇特定的UITextField時。相關的代碼是:

func keyboardWillShow(notification: NSNotification) { 
    if let userInfo = notification.userInfo { 
     if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { 
      kbHeight = keyboardSize.height 
      self.animateDurationView(true) 
     } 
    } 
} 
func keyboardWillHide(notification: NSNotification) { 

    self.animateDurationView(false) 
} 

func animateDurationView(up: Bool) { 
    var movement = up ? -kbHeight : kbHeight 
    println(movement) 
    UIView.animateWithDuration(0.3, animations: { 
     self.durationView.frame = CGRectOffset(self.durationView.frame, 0, movement) 
     println(self.durationView.frame) 
    }) 
} 

的截圖可以在這個主題中找到:KeyboardWillShow only moves container UIView for certain UITextFields

編輯:在這一點上,我幾乎可以肯定,那就是與我擰自動佈局約束。

+0

是您的文本字段/ ContainerView設置,使得顯示的鍵盤,當他們移動,從而領域沒有得到覆蓋由鍵盤(隱藏)? – BonanzaDriver

+0

是的,這就是爲什麼我移動視圖 – Liumx31

+0

我有相同的情況,當我關閉AutoLayout時,它工作正常。所以我可以確認這與AutoLayout/Constraints有關 – Vincent

回答

1

嘗試在每個動畫事務結束時添加commitAnimations :)我也是我遇到了這個問題...現在它工作正常..您可以將委託添加到文本字段,並且可以將其移動到委託方法DidBeginEditing和DidEndEditing方法對於textfield :)

+0

Swift好像沒有commitAnimations – Liumx31

+0

好。更好的是,您可以使用文本字段的委託方法來檢測文本字段的事件 –

+0

我已經委派了代表。不幸的是,這並不能解決問題 – Vincent

0

剛纔有同樣的問題。我做錯了什麼是試圖將運動應用於內部視圖。移動最外層視圖使其工作,因爲此外層視圖不具有任何自動佈局限制。

因此,要回答這個問題 - 如果任何人都應該得到這裏 只有移動self.view