Уведомление или обнаружение снимка экрана?

Есть ли уведомление или другой механизм получения информации о том, что пользователь делает снимок экрана с помощью кнопок дома / питания?

Я видел потоки о желании отключить снятие скриншотов, но это не то, что я ищу.

У меня есть клиент-фотограф, который обеспокоен тем, что его работы будут скопированы с помощью пользователей, снимающих скриншоты, и я подумал, что если бы была возможность поместить водяной знак по изображению до того, как снимок был снят, это устранит его страхи.

Я сомневаюсь, что это когда-нибудь будет и не без оснований. Вы не должны убирать возможности скриншотов у своих пользователей.

Вот способ, который может работать, хотя он будет полностью противоречить правилам пользовательского интерфейса. Я уверен. Если вы вынудите пользователя перенести палец на экран для показа изображения, я не думаю, что они могут создавать скриншоты. Поскольку, как только вы нажимаете клавиши «home + lock», чтобы на самом деле сделать снимок экрана, экран, похоже, ведет себя так, как будто пальцы не касаются его. Попробуйте сделать снимок экрана, перемещаясь между главными экранами, чтобы понять, что я имею в виду.

Не идеальное решение любыми способами, но вы можете использовать его в своем дизайне приложений, если вы действительно умны, не отвлекая слишком много от пользовательского опыта (сложная задача!). Тем не менее, я считаю, что это может позволить вам отображать иллюстрации / фотографии, не позволяя пользователям делать скриншоты.

PictureWasTakenNotification Darwin будет отправлено, когда пользователь сделает снимок экрана. Тем не менее, это отправляется после снятия снимка экрана.

(Никакие уведомления не будут отправлены до того, как будет сделан снимок экрана.)

Начиная с 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]; } 

На самом деле нужно уведомление, которое отправляется до фактического захвата экрана. Метод делегата или некоторые другие способы предоставления приложениям возможности «скриншотов в полете» перерисовать ваш контент до захвата.

И нет никого.

Interesting Posts

Как JSTileMap обрабатывает карты сетчатки и ipad / iphone?

NSXMLParser останавливает синтаксический анализ после встречи с особым символом

Вызовите ExtensionDelegate для создания / обновления данных для Complication

Иконки приложений, не включенные в сборку с Xcode 9

На iOS 7 нажатие на контроллер с панелью инструментов оставляет пробел неиспользуемого пространства, если он в конечном итоге содержится в контроллере панели вкладок

Невозможно изменить цвет фона панели поиска

Заменить буквы в строке

ReactiveCocoa 5, ReactiveSwift для обработки подзапросов и лучшей практики

Запрос AFNetworking и POST

Загрузка многостраничного файла iPhone с использованием AFNetworking

Изменение ориентации камеры при фотосъемке. Даже если ориентация заблокирована.

Как безопасно отделить рендеринг от обновления модели?

presentViewController и отображение панели навигации

<img> был обрезан 1px на мобильном сафари

почему дополнительное пространство находится на вершине UITableView – просто

Давайте будем гением компьютера.