我很难过。我已经在这里和其他地方阅读(并尝试过)关于检查系统版本号,功能和选择器的大约30个答案。但这不是以前的操作系统版本中没有的选择器,它是一个UI通知。
有问题的代码是基本的:
[nc addObserver:self
selector:@selector(screenShotTaken:)
name:UIApplicationUserDidTakeScreenshotNotification
object:nil];
编译好。在iOS 7设备上运行良好。在iOS 6.1设备上,应用程序在启动时终止:
dyld: Symbol not found: _UIApplicationUserDidTakeScreenshotNotification
只要该代码存在,运行时就想找到该符号。我可以通过包裹它来解决它:
if (1 == 2) {
[nc addObserver:self
selector:@selector(screenShotTaken:)
name:UIApplicationUserDidTakeScreenshotNotification
object:nil];
}
但它不会在iOS 7设备上运行。
答案 0 :(得分:1)
答案是将部署目标从iOS 7设置回iOS 6.然后运行时测试可以避免正确注册iOS 7通知:
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
[nc addObserver:self
selector:@selector(screenShotTaken:)
name:UIApplicationUserDidTakeScreenshotNotification
object:nil];
}
答案 1 :(得分:-1)
iOS 6及更低版本,您可以使用
UIApplicationDidChangeStatusBarOrientationNotification
<强> UIApplicationUserDidTakeScreenshotNotification 强>
当用户按下Home和Lock按钮进行截屏时发布。 此通知不包含userInfo字典。拍摄截图后会发布此通知。
状况 适用于iOS 7.0及更高版本。
注意: UIApplicationUserDidTakeScreenshotNotification在截屏后发布。目前在拍摄截图之前无法通知,这对于隐藏尴尬的照片可能很有用。希望Apple添加UIApplicationUserWillTakeScreenshotNotification in iOS 8! :]
引用 http://www.raywenderlich.com/48001/easily-overlooked-new-features-ios-7#screenshot