2015-03-13 84 views
0


我有自定義鍵盤最奇怪的情況。所有的
首先,我已成立了文本框的虛擬視圖,爲了隱藏股價鍵盤let dummyView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) amountField.inputView = dummyView
然後,我有我的這些動畫自定義鍵盤時,編輯的文本字段Swift解僱自定義鍵盤奇怪的行爲

func textFieldDidBeginEditing(textField: UITextField) { 
     keyboardContainer.hidden = false 
     UIView.animateWithDuration(0.6, animations: { 
      self.keyboardContainer.frame = self.keyboardScreenPosition! 
      }, completion: { 
       finished in 
       if finished { 
        //just in case 
       } 
     }) 

    } 


也開始,我已經設置了一個按鈕,它應該結束的編輯和隱藏我的自定義鍵盤

@IBAction func calculeaza(sender: AnyObject) { 

     self.amountField.resignFirstResponder() 

     UIView.animateWithDuration(0.6, animations: { 

      self.keyboardContainer.frame.origin.y = self.view.bounds.height 
      }, completion: { 
       finished in 
       if finished { 

       } 
     }) 
    } 


最奇怪的部分配備了resignFirstResponder()。讓我解釋一下:如果沒有包含該部分,鍵盤隱藏得很好(但文本字段保持閃爍不是c選項的光標)。
如果包含退出部分,鍵盤會從頂部移動到當前位置,然後再次按下按鈕時,按預期滑動。
我真的很困惑,爲什麼會發生這種情況......我調整了視圖的大小和高度是好的,所以它應該從頭開始滑動。我真的不明白髮生了什麼事。
任何幫助非常感謝,非常感謝!

編輯:另一個奇怪的影響是,如果我移動動畫結束封閉的辭職部分(或超級末端編輯)。鍵盤滑動得很好,然後再次出現在屏幕上

回答

0

這聽起來像是自動佈局約束的問題。那些在animateWithDuration之後更新,這可能會導致這種奇怪的行爲。如果在Storyboard中有用於自動佈局的(a)個約束,請嘗試更新(/那些)。如果您還沒有,則需要將其添加爲IBOutlet,並在持續時間內爲自動佈局更改設置動畫。

例如,假設約束被稱爲theRelevantConstraint。然後更換中間線

self.theRelevantConstraint.constant = valueItShouldBe 
UIView.animateWithDuration(0.6, animations: { 
    self.view.layoutIfNeeded() 
    }, completion: { 
    finished in 
    if finished { 

    } 
})