【问题标题】:Perform action when status bar is clicked单击状态栏时执行操作
【发布时间】:2018-08-04 03:26:31
【问题描述】:

我见过像 messenger 这样的流行应用程序使用它们的状态栏做一些事情。当您呼叫某人并退出应用程序时,会出现一个红色的状态栏。如果您单击它,您将返回应用程序。我一直在搜索单击状态栏时执行的操作。我不确定它是否甚至涉及状态栏。无论如何,如果你知道如何执行一个动作,我会很高兴帮助我:) 我不想看起来只是在这里发帖,因为我很懒惰。实际上很难找到这方面的信息。

【问题讨论】:

    标签: swift statusbar uistatusbar


    【解决方案1】:

    状态栏是 iOS 平台的一部分,与您的应用程序无关。你唯一能真正控制的是它的外观。您在不同情况下看到的“不同”状态栏,例如当您打电话或跟踪您的位置等时,都是由操作系统本身驱动的。

    如果您确实需要向状态栏添加操作,最好在状态栏上使用“假”透明视图并向其添加手势,而不是将其捕获为 UIApplication 的子视图之一。这是私有 API 使用的示例。苹果一直反对这种做法,甚至在某些情况下拒绝了应用程序。

    【讨论】:

    • 好的,这似乎是一个有趣的答案。这是否意味着按照 Sh_Khan 的回答让我的应用遭到拒绝?
    • 我不会说它会让你的应用被拒绝。我是说 Apple 之前曾拒绝使用私有 API 的应用程序。
    • 好的,如果我的应用程序将被拒绝,我会将此帖子作为答案。
    【解决方案2】:

    首先获取状态视图

    extension UIApplication {
        var statusBarView: UIView? {
            return value(forKey: "statusBar") as? UIView
        }
    }
    

    为其添加手势

    let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
    
    let stV = UIApplication.shared.statusBarView
    
    stV?.addGestureRecognizer(tap)
    
    stV?.isUserInteractionEnabled = true
    

    ///

    @objc func handleTap(_ sender: UITapGestureRecognizer) {
        print("status clicked")
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多