Fix tap knockable room and custom keyboard did show scrolling (#3603)

* making knockable rooms tappable

* added a way to customise the keyboard scrolling

in case we want the focussed view/textview to display something outside its content

* better documentation
This commit is contained in:
Mauro
2024-12-11 16:09:52 +01:00
committed by GitHub
parent 4931ad0ed3
commit 9856e3e5b4
6 changed files with 64 additions and 28 deletions
@@ -0,0 +1,24 @@
//
// Copyright 2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only
// Please see LICENSE in the repository root for full details.
//
import SwiftUI
extension View {
/// Adds a scroll view reader to the view and scrolls to the provided id if the condition is true, so far it only works properly if the item is the last in the scroll view.
func shouldScrollOnKeyboardDidShow(_ shouldScroll: Bool, to id: any Hashable) -> some View {
ScrollViewReader { scrollView in
onReceive(NotificationCenter.default.publisher(for: UIApplication.keyboardDidShowNotification)) { _ in
guard shouldScroll else { return }
// Scroll to the footer of the alias when the keyboard appears
withAnimation {
// We could improve this in the future by also providing the anchor as an argument
scrollView.scrollTo(id, anchor: .top)
}
}
}
}
}