fix scroll button

This commit is contained in:
ryanzhao 2021-06-04 10:29:03 +10:00
parent 0475274b4d
commit 55786d6f17

View file

@ -8,7 +8,7 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
let thread: TSThread let thread: TSThread
let focusedMessageID: String? // This isn't actually used ATM let focusedMessageID: String? // This isn't actually used ATM
var unreadViewItems: [ConversationViewItem] = [] var unreadViewItems: [ConversationViewItem] = []
var didConstrainScrollButton = false // Part of a workaround to get the scroll button to show up in the right place var scrollButtonConstraint: NSLayoutConstraint?
// Search // Search
var isShowingSearchUI = false var isShowingSearchUI = false
var lastSearchedText: String? var lastSearchedText: String?
@ -170,6 +170,7 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
messagesTableView.pin(to: view) messagesTableView.pin(to: view)
view.addSubview(scrollButton) view.addSubview(scrollButton)
scrollButton.pin(.right, to: .right, of: view, withInset: -16) scrollButton.pin(.right, to: .right, of: view, withInset: -16)
scrollButtonConstraint = scrollButton.pin(.bottom, to: .bottom, of: view, withInset: -16)
// Unread count view // Unread count view
view.addSubview(unreadCountView) view.addSubview(unreadCountView)
unreadCountView.addSubview(unreadCountLabel) unreadCountView.addSubview(unreadCountLabel)
@ -295,10 +296,8 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
baselineKeyboardHeight = newHeight baselineKeyboardHeight = newHeight
self.messagesTableView.keyboardHeight = newHeight self.messagesTableView.keyboardHeight = newHeight
} }
if !didConstrainScrollButton { if (newHeight >= self.messagesTableView.keyboardHeight) {
// HACK: Part of a workaround to get the scroll button to show up in the right place scrollButtonConstraint?.constant = -(newHeight + 16)
scrollButton.pin(.bottom, to: .bottom, of: view, withInset: -(newHeight + 16)) // + 16 to match the bottom inset of the table view
didConstrainScrollButton = true
} }
let newContentOffsetY = max(self.messagesTableView.contentOffset.y + min(lastPageTop, 0) + newHeight - self.messagesTableView.keyboardHeight, 0.0) let newContentOffsetY = max(self.messagesTableView.contentOffset.y + min(lastPageTop, 0) + newHeight - self.messagesTableView.keyboardHeight, 0.0)
self.messagesTableView.contentOffset.y = newContentOffsetY self.messagesTableView.contentOffset.y = newContentOffsetY
@ -309,6 +308,7 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat
@objc func handleKeyboardWillHideNotification(_ notification: Notification) { @objc func handleKeyboardWillHideNotification(_ notification: Notification) {
self.messagesTableView.contentOffset.y -= (self.messagesTableView.keyboardHeight - self.baselineKeyboardHeight) self.messagesTableView.contentOffset.y -= (self.messagesTableView.keyboardHeight - self.baselineKeyboardHeight)
self.messagesTableView.keyboardHeight = self.baselineKeyboardHeight self.messagesTableView.keyboardHeight = self.baselineKeyboardHeight
scrollButtonConstraint?.constant = -(self.baselineKeyboardHeight + 16)
self.scrollButton.alpha = self.getScrollButtonOpacity() self.scrollButton.alpha = self.getScrollButtonOpacity()
self.unreadCountView.alpha = self.scrollButton.alpha self.unreadCountView.alpha = self.scrollButton.alpha
} }