如何在iOS 6设备上运行时找不到iOS 7 UI通知符号?

时间:2014-03-01 07:23:56

标签: ios

我很难过。我已经在这里和其他地方阅读(并尝试过)关于检查系统版本号,功能和选择器的大约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设备上运行。

2 个答案:

答案 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