0
我试图在键盘出现时将视图向上移动。这适用于两个视图,但第三个视图导致视图看起来向下移动一定数量,然后移回到它开始的确切位置,或者动画看起来如此。调试,我没有看到其他地方self.view.frame正在设置,但这种方法。此外,补偿看起来是正确的,就好像视图应该像其他视图一样向上移动。请参阅下面的keyboardWillShow方法。更改视图框架原点导致其反弹回原位
func keyboardWillShow(notification: NSNotification){
if self.origFrame == nil{
self.origFrame = self.view.frame
}
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue(){
var testRect = self.view.frame
testRect.size.height -= keyboardSize.height
if !testRect.contains(loginBtn!.frame.origin){
let bottomSpace = self.view.frame.size.height - loginBtn.frame.origin.y - loginBtn.frame.size.height
let keyboardOverlap = keyboardSize.height - bottomSpace
let newY = self.origFrame!.origin.y - keyboardOverlap
self.view.frame.origin.y = newY
}
}
}
您使用自动布局吗?在使用自动布局时更改视图帧通常是不好的做法 –
@LukePatterson我使用约束来布局视图。在这种情况下键盘出现时移动视图的最佳方式是什么? – steventnorris
Steven,你如何在键盘显示/隐藏时以编程方式更改约束 –