// // https://mczachurski.dev // Copyright © 2023 Marcin Czachurski and the repository contributors. // Licensed under the Apache License 2.0. // import SwiftUI import Combine // TODO: Move to shared views. extension View { var keyboardPublisher: AnyPublisher { Publishers .Merge( NotificationCenter .default .publisher(for: UIResponder.keyboardWillShowNotification) .map { _ in true }, NotificationCenter .default .publisher(for: UIResponder.keyboardWillHideNotification) .map { _ in false }) .debounce(for: .seconds(0.1), scheduler: RunLoop.main) .eraseToAnyPublisher() } }