更改视图框架原点会导致它弹回原位
Changing views frame origin causes it to bounce back into place
我正在尝试在出现键盘时向上移动视图。这适用于两个视图,但在第三个视图上,相同的代码导致视图似乎向下移动了一定量,然后又移回了它开始的确切位置,或者动画看起来如此。调试,除此方法外,我在其他任何地方都看不到 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
}
}
}
这是我过去所做的
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 像素恰好是适合我的特定目的的范围。
或者,您可以通过编程方式调整约束,而不是移动框架。
我正在尝试在出现键盘时向上移动视图。这适用于两个视图,但在第三个视图上,相同的代码导致视图似乎向下移动了一定量,然后又移回了它开始的确切位置,或者动画看起来如此。调试,除此方法外,我在其他任何地方都看不到 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
}
}
}
这是我过去所做的
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 像素恰好是适合我的特定目的的范围。
或者,您可以通过编程方式调整约束,而不是移动框架。