我的 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] 删除。
我来说两句