通知或检测截图正在?

是否有通知或其他机制被告知用户正在使用家庭/电源button进行屏幕截图?

我已经看到想要禁用屏幕截图的线程,但这不是我想要做的。

我有一位摄影师客户,他担心他的作品会被截图用户复制,而我认为如果在截图之前有机会在图像上添加水印,这将减轻他的恐惧。

我怀疑这将永远是一件事,并有充分的理由。 您不应该有能力从您的用户带走屏幕截图function。

这是一种可行的方法,但是我敢肯定,它完全违背了用户界面指南。 如果您强制用户的手指在屏幕上显示图像,那么我不认为他们可以创build屏幕截图。 因为只要按下home + lock键实际上截图,屏幕似乎就好像没有手指触摸它。 在主屏幕之间移动时尝试截图,看看我的意思。

不是任何方式的完美解决scheme,但是如果你真的很聪明,可以将它应用到你的应用程序devise中,而不会从用户体验中减损太多(尽pipe这是一个严峻的挑战!)。 不过,我相信这可能会允许您显示艺术作品/照片,而不允许用户截取屏幕。

PictureWasTakenNotification达尔文通知将在用户截图时发送。 不过,这是截图之后发送的。

(截图之前不会有任何通知发送。)

自iOS 7以来, UIApplicationUserDidTakeScreenshotNotification存在。 所以做这样的事情应该检测到的截图:

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDidTakeScreenshot) name:UIApplicationUserDidTakeScreenshotNotification object:nil]; } - (void)userDidTakeScreenshot { // Screenshot taken, act accordingly. } 

最后,不要忘记删除观察者:

 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationUserDidTakeScreenshotNotification object:nil]; } 

真正需要的是在实际屏幕捕获发生之前发送的通知。 一个委托方法或其他方式给应用程序一个截图飞行的机会来重新抓取您的内容之前抓斗发生。

而且没有一个。