1

我创建了一个内部框架,它在 iOS 12 之前运行良好,因为我在窗口上添加了一个按钮(浮动按钮),以便它在整个应用程序中可见。

我创建了一个 UIWindow 类来添加一个按钮,检查下面的代码

public class FloatingButtonWindow: UIWindow {
    public var button: UIButton?
    
    public init() {
        super.init(frame: UIScreen.main.bounds)
        backgroundColor = nil
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    public override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        guard let button = button else { return false }
        let buttonPoint = convert(point, to: button)
        return button.point(inside: buttonPoint, with: event)
    }
}

在应用程序委托中,在 didfinishlaunchingwithoption 我使用共享实例调用

 FloatingButtonController.sharedInstance.button.addTarget(self, action: #selector(AppDelegate.floatingButtonWasTapped), for: .touchUpInside)

但是从 iOS 13 开始,由于引入了 UIWindowscene,应用程序上看不到按钮。

我需要帮助才能使用 UIWindowscene 在 iOS 13 中的应用程序窗口上添加浮动按钮。

注意:作为一种解决方法,我已经从我的项目中删除了场景并且它运行良好,但我需要更灵活的解决方案,可以在 iOS 13 及更高版本上使用。所以我只需要更新我的框架。

4

0 回答 0