如何检查iOS中的屏幕是打开还是关闭?我想知道屏幕当前是否打开,即使我的应用程序在后台。我希望有一个事件监听器。感谢。
答案 0 :(得分:2)
在 Swift 3 中,你可以这样做:
override func viewDidLoad() {
super.viewDidLoad()
// Observer UIApplicationDidBecomeActive,UIApplicationDidEnterBackground
NotificationCenter.default.addObserver(
self,
selector: #selector(MyViewController.applicationDidBecomeActive(notification:)),
name: NSNotification.Name.UIApplicationDidBecomeActive,
object: nil)
NotificationCenter.default.addObserver(
self,
selector: #selector(MyViewController.applicationDidEnterBackground(notification:)),
name:NSNotification.Name.UIApplicationDidEnterBackground,
object: nil)
}
func applicationDidBecomeActive(notification: NSNotification) {
// here my app did become active
}
func applicationDidEnterBackground(notification: NSNotification) {
// here my app did enter background
}
您可以在official guide。
中找到更多详细信息来自实际来源的详细信息:
extension NSNotification.Name {
// These notifications are sent out after the equivalent delegate message is called
@available(iOS 4.0, *)
public static let UIApplicationDidEnterBackground: NSNotification.Name
@available(iOS 4.0, *)
public static let UIApplicationWillEnterForeground: NSNotification.Name
public static let UIApplicationDidFinishLaunching: NSNotification.Name
public static let UIApplicationDidBecomeActive: NSNotification.Name
public static let UIApplicationWillResignActive: NSNotification.Name
public static let UIApplicationDidReceiveMemoryWarning: NSNotification.Name
public static let UIApplicationWillTerminate: NSNotification.Name
public static let UIApplicationSignificantTimeChange: NSNotification.Name
public static let UIApplicationWillChangeStatusBarOrientation: NSNotification.Name // userInfo contains NSNumber with new orientation
public static let UIApplicationDidChangeStatusBarOrientation: NSNotification.Name // userInfo contains NSNumber with old orientation
// userInfo dictionary key for status bar orientation
public static let UIApplicationWillChangeStatusBarFrame: NSNotification.Name // userInfo contains NSValue with new frame
public static let UIApplicationDidChangeStatusBarFrame: NSNotification.Name // userInfo contains NSValue with old frame
// userInfo dictionary key for status bar frame
@available(iOS 7.0, *)
public static let UIApplicationBackgroundRefreshStatusDidChange: NSNotification.Name
@available(iOS 4.0, *)
public static let UIApplicationProtectedDataWillBecomeUnavailable: NSNotification.Name
@available(iOS 4.0, *)
public static let UIApplicationProtectedDataDidBecomeAvailable: NSNotification.Name
// Key in options dict passed to application:[will | did]FinishLaunchingWithOptions and info for UIApplicationDidFinishLaunchingNotification
// This notification is posted after the user takes a screenshot (for example by pressing both the home and lock screen buttons)
@available(iOS 7.0, *)
public static let UIApplicationUserDidTakeScreenshot: NSNotification.Name
}
答案 1 :(得分:1)
在迅速5中,这仅对我有用:
答案 2 :(得分:0)
您可以尝试使用此代码获取ios中的屏幕状态。
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
NULL, // observer
displayStatusChanged, // callback
CFSTR("com.apple.iokit.hid.displayStatus"), // event name
NULL, // object
CFNotificationSuspensionBehaviorDeliverImmediately);