diff --git a/Adamant/Modules/Chat/View/ChatViewController.swift b/Adamant/Modules/Chat/View/ChatViewController.swift index c522680c6..e3f7b1fdc 100644 --- a/Adamant/Modules/Chat/View/ChatViewController.swift +++ b/Adamant/Modules/Chat/View/ChatViewController.swift @@ -55,6 +55,7 @@ final class ChatViewController: MessagesViewController { numberOfLines: 1 ) + private var keyboardHeight: CGFloat = 0 private var sendTransaction: SendTransaction // swiftlint:disable unused_setter_value @@ -321,6 +322,20 @@ extension ChatViewController { self?.state.isAppActive = false } .store(in: &subscriptions) + + if !isMacOS { + NotificationCenter.default.publisher(for: UIResponder.keyboardDidChangeFrameNotification) + .sink { [weak self] notification in + guard let self, + let frame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect, + let window = self.view.window else { return } + + let convertedFrame = self.view.convert(frame, from: window) + let height = max(self.view.bounds.maxY - convertedFrame.minY - hiddenScrollViewPartHeight / 2, 0) + print(UIScreen.main.bounds.height) + } + .store(in: &subscriptions) + } viewModel.didTapAdmNodesList .sink { [weak self] in @@ -594,7 +609,7 @@ extension ChatViewController { x: messagesCollectionView.contentOffset.x, y: messagesCollectionView.contentOffset.y + hiddenScrollViewPartHeight, width: messagesCollectionView.bounds.width, - height: messagesCollectionView.bounds.height - hiddenScrollViewPartHeight * 2 + height: messagesCollectionView.bounds.height - hiddenScrollViewPartHeight * 2 - keyboardHeight ) let visibleIndexPaths = messagesCollectionView.indexPathsForVisibleItems @@ -950,6 +965,8 @@ extension ChatViewController { NewMessagesCell.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter ) + collection.enableKeyboardDismissOnTap(targetView: collection) + return collection } diff --git a/Adamant/Modules/Chat/View/Subviews/ChatMessagesCollection.swift b/Adamant/Modules/Chat/View/Subviews/ChatMessagesCollection.swift index 73c305407..a589dd71a 100644 --- a/Adamant/Modules/Chat/View/Subviews/ChatMessagesCollection.swift +++ b/Adamant/Modules/Chat/View/Subviews/ChatMessagesCollection.swift @@ -89,7 +89,15 @@ final class ChatMessagesCollectionView: MessagesCollectionView { setContentOffset(contentOffset, animated: false) } - + func enableKeyboardDismissOnTap(targetView: UIView) { + let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) + tapGesture.cancelsTouchesInView = false + self.addGestureRecognizer(tapGesture) + } + + @objc private func dismissKeyboard() { + self.superview?.endEditing(true) + } } fileprivate extension ChatMessagesCollectionView {