处理程序未收到 BatteryState 通知

北六十度

我的 batteryStateDidChange 处理程序永远不会被调用(在模拟器或 iPhone 上)。我在这个站点上找到了几个例子(通常是旧的),并且我已经阅读了 Apple 文档。我在构建时也收到 pid 错误:“由于系统完整性保护而无法附加到进程”,但不确定这是否是原因。尽管我从 1970 年代开始编程,但我以前从未使用过 Swift 或 Xcode。我正在使用 Swift 4 和 Xcode 9.1。帮助将不胜感激。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        //Tell UIDevice that we want battery notifications
            UIDevice.current.isBatteryMonitoringEnabled = true

        // Register to listen for notifications
        NotificationCenter.default.addObserver(self, selector: #selector(batteryStateDidChange(_notification:)), name: Notification.Name.UIDeviceBatteryStateDidChange, object: nil)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    var batteryState: UIDeviceBatteryState {
        return UIDevice.current.batteryState
    }

    // Handle the batteryStateDidChange notification  <---- This never gets called
    @objc func batteryStateDidChange(_notification: Notification) {
        switch batteryState {
        case .unplugged, .unknown:
            print("not charging")
        case .charging, .full:
            print("charging or full")
        }
    }
}
瓦迪安

下划线后必须有一个空格字符

@objc func batteryStateDidChange(_ notification: Notification)

选择器很简单

#selector(batteryStateDidChange)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章