Похоже, что нет прямого способа сделать это, чтобы обнаружить, нажал ли пользователь home + power button
. Согласно этому , это было возможно раньше с помощью уведомления Дарвина, но это больше не работает. Так как Snapchat уже делает это, я предполагаю, что они проверяют фотоальбом iPhone, чтобы определить, было ли добавлено новое изображение в течение этих 10 секунд, и в какой-то мере они сравниваются с текущим отображаемым изображением. Может быть некоторая обработка изображения сделана для этого сравнения. Просто мысль, возможно, вы можете попытаться расширить это, чтобы оно заработало. Проверьте это для более подробной информации .
Редактировать:
Похоже, что они могут обнаружить событие отмены UITouch (Снимок экрана отменяет касания) и показать это сообщение об ошибке пользователю согласно этому блогу: Как обнаружить скриншоты на iOS (например, Snapchat)
В этом случае вы можете использовать – touchesCancelled:withEvent:
метод для определения отмены UITouch, чтобы обнаружить это. Вы можете удалить изображение в этом методе делегата и показать соответствующее предупреждение пользователю.
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesCancelled:touches withEvent:event];
NSLog(@"Touches cancelled");
[self.imageView removeFromSuperView]; //and show an alert to the user
}