gpt4 book ai didi

ios - 当 UIView 用键盘向上滚动时,它似乎笨拙地在每个文本字段上跳跃,不知道如何修复它

转载 作者:行者123 更新时间:2023-11-30 12:00:20 24 4
gpt4 key购买 nike

这是正在发生的事情的 gif:

enter image description here

功能如下:

func getKeyboardHeight(_ notification:Notification) -> CGFloat {
let userInfo = notification.userInfo
let keyboardSize = userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue
return keyboardSize.cgRectValue.height
}


func keyboardWillShow(_ notification:Notification) {
view.frame.origin.y = -getKeyboardHeight(notification)
}

func keyboardWillHide(_ notification:Notification) {
view.frame.origin.y = 0
}


func subscribeToKeyBoardNotifications(){
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: .UIKeyboardWillHide, object: nil)
}

它在第一个文本输入点击上完美工作,但是如果我点击它下面的一个, View 就会“跳”起来并返回到它应该在的位置,这在视觉上非常不和谐。

我还尝试检查 view.frame.origin.y == 0 是否调整 y 的原点,但这不起作用,因为第一个文本框的原点是 -4,第二个文本框的原点是 -92 (对我来说确实没有意义),我想在不同的 View 中使用它,而不是为每个潜在的输入框硬编码 origin.y 。

最佳答案

我的建议是将键盘出现时想要向上滚动的内容(仅需要滚动的内容)添加到 UIScrollView 中,并将其底部约束设置为 BottomLayoutGuid。获得 Controller 的导出。并在storyBoard的相关UIViewController中将AttributeInspector属性中的'AdjustScrollViewInsets'设置为Unchecked

@IBOutlet weak var scrollViewBottomCons     : NSLayoutConstraint!
let scrollViewBottomConsNormalValue : CGFloat! = 50 // assuming its storyboard value is 50

func keyboardWillShow(_ notification:Notification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if scrollViewBottomCons.constant == scrollViewBottomConsNormalValue {
self.scrollViewBottomCons.constant = keyboardSize.height
self.navigationController?.isNavigationBarHidden = true // assuming its current state is true
}
}
}

func keyboardWillHide(_ notification:Notification) {
if let _ = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if scrollViewBottomCons.constant != scrollViewBottomConsRealValue {
self.scrollViewBottomCons.constant = scrollViewBottomConsRealValue
self.navigationController?.isNavigationBarHidden = true // assuming its current state is true
}
}
}

关于ios - 当 UIView 用键盘向上滚动时,它似乎笨拙地在每个文本字段上跳跃,不知道如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47317318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com