Signal-iOS/SignalUI/Stickers/StickerPickerKeyboard.swift
Igor Solomennikov 6c7aa30422
Temporary fix for broken layout in attachment and sticker keyboards.
It seems that UIKit extends system keyboard background above UIInputView subclass with the purpose of making top corners rounded. This temporary fix removes custom background color from attachment picker and sticker keyboards. The result is a system-provided background that looks okay.
2025-09-15 15:28:52 -07:00

85 lines
2.3 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
public import SignalServiceKit
// MARK: - StickerKeyboard
public class StickerKeyboard: CustomKeyboard {
public typealias StickerKeyboardDelegate = StickerPickerDelegate & StickerPacksToolbarDelegate
public weak var delegate: StickerKeyboardDelegate?
private let headerView = StickerPacksToolbar()
private lazy var stickerPickerPageView = StickerPickerPageView(delegate: self)
public override init() {
super.init()
var backgroundColor = UIColor.Signal.background
#if compiler(>=6.2)
if #available(iOS 26.0, *) {
backgroundColor = .clear
headerView.layoutMargins.top = 0
}
#endif
self.backgroundColor = backgroundColor
let stackView = UIStackView(arrangedSubviews: [ headerView, stickerPickerPageView ])
contentView.addSubview(stackView)
stackView.axis = .vertical
stackView.alignment = .fill
stackView.autoPinEdgesToSuperviewEdges()
headerView.delegate = self
}
required public init(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public override func wasPresented() {
super.wasPresented()
stickerPickerPageView.wasPresented()
}
}
// MARK: StickerPacksToolbarDelegate
extension StickerKeyboard: StickerPacksToolbarDelegate {
public var shouldShowManageButton: Bool { true }
public func manageButtonWasPressed() {
AssertIsOnMainThread()
delegate?.presentManageStickersView()
}
}
// MARK: StickerPickerPageViewDelegate
extension StickerKeyboard: StickerPickerPageViewDelegate {
public func didSelectSticker(stickerInfo: StickerInfo) {
self.delegate?.didSelectSticker(stickerInfo: stickerInfo)
}
public var storyStickerConfiguration: StoryStickerConfiguration {
.hide
}
public func presentManageStickersView() {
self.delegate?.presentManageStickersView()
}
public func setItems(_ items: [StickerHorizontalListViewItem]) {
headerView.packsCollectionView.items = items
}
public func updateSelections(scrollToSelectedItem: Bool) {
headerView.packsCollectionView.updateSelections(scrollToSelectedItem: scrollToSelectedItem)
}
}