gpt4 book ai didi

iOS Tableview Controller 键盘偏移量(里面的示例项目)

转载 作者:搜寻专家 更新时间:2023-11-01 06:03:42 24 4
gpt4 key购买 nike

我目前正在我的应用程序中实现聊天功能。这是一个非常简单的表格 View ,显示了作为消息的行。我很难弄清楚如何对不同的键盘使用react。

目前我在显示键盘时计算键盘的高度并将其添加为偏移量。我之前发布过关于这个主题的问题,人们倾向于告诉我我应该使用插图,但我无法让它工作。

我希望 tableview 的内容像在 iMessage 或 Whatsapp 中一样移动,其中消息随着键盘向上移动并返回。它确实适用于标准键盘,但一旦你切换到表情符号键盘,它就会变得一团糟。

我需要帮助来找到解决方案,或者向我展示在表格 View 中处理键盘的正确方法。

为了保护大家的时间,我创建了一个虚拟项目来保存我当前的聊天状态。我希望有人已经做到了这一点并且可以帮助我,因为我现在非常想找到解决方案。 https://www.dropbox.com/s/bldknydjfrwknr9/chatOffset.zip?dl=0

也许偏移量的方式是错误的,有人可以告诉我更好的解决方案吗?

最佳答案

您应该实现此代码。请注意,这是在 Swift 2.3 中实现的,但我已经在 Swift 3 上实现了这段代码并且它有效我只是没有 Swift 3< 的副本/strong> 立即编写代码。

// Tag your bottom Layout Constraint (probably the one at the bottom of your tableView which connects to the self.view or the one connected to your textField to the self.view)
@IBOutlet var bottomLayoutConstraint: NSLayoutConstraint!

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)

// this code snippet will observe the showing of keyboard
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillShowNotification(_:)), name: UIKeyboardWillShowNotification, object: nil)

// this code snippet will observe the hiding of keyboard
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyboardWillHideNotification(_:)), name: UIKeyboardWillHideNotification, object: nil)
}

func keyboardWillShowNotification(notification: NSNotification) {
updateBottomLayoutConstraintWithNotification(notification)
}

func keyboardWillHideNotification(notification: NSNotification) {
updateBottomLayoutConstraintWithNotification(notification)
}

func updateBottomLayoutConstraintWithNotification(notification: NSNotification) {
let userInfo = notification.userInfo!

// get data from the userInfo
let animationDuration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
let keyboardEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
let convertedKeyboardEndFrame = view.convertRect(keyboardEndFrame, fromView: view.window)
let rawAnimationCurve = (notification.userInfo![UIKeyboardAnimationCurveUserInfoKey] as! NSNumber).unsignedIntValue << 16
let animationCurve = UIViewAnimationOptions(rawValue: UInt(rawAnimationCurve))

bottomLayoutConstraint.constant = CGRectGetMaxY(view.bounds) - CGRectGetMinY(convertedKeyboardEndFrame)

// animate the changes
UIView.animateWithDuration(animationDuration, delay: 0.0, options: [.BeginFromCurrentState, animationCurve], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}

override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)

// remove the observers so the code won't be called all the time
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil)
}

关于iOS Tableview Controller 键盘偏移量(里面的示例项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43332308/

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