当键盘出现时,我正试图向上移动视图。这在两个视图上都有效,但在第三个视图上,相同的代码导致视图似乎向下移动了一定的量,然后又移回了它开始的确切位置,或者动画看起来是这样。调试时,除了这个方法,我看不到其他地方正在设置self.view.frame。此外,偏移看起来是正确的,好像视图应该像其他视图一样向上移动。请参阅下面的键盘WillShow方法。
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
}
}
}
这是我在过去的中所做的
func textViewDidBeginEditing(textView: UITextView) {
let point:CGPoint = CGPoint(x: textView.frame.origin.x - 8, y: textView.frame.origin.y - 100)
scrollView.contentOffset = point
}
这会根据用户点击的文本视图的位置向上移动视图。8和100像素恰好是适合我特定用途的范围。
或者,您可以通过编程调整约束,而不是移动框架。