我想限制用户在我的 Xamarin Native iOS 应用程序中截取屏幕截图。
我看过很多链接和代码,但不知何故它对我不起作用。
我按照链接中的解决方案限制用户截取屏幕截图但是当我编写此代码时,我可以在屏幕截图上添加 UIView 层,但之后我的文本字段变为禁用并且滚动视图也无法正常工作。
如何从顶视图中删除添加的图层。
OnResignActivation 和 OnActivated 将不起作用,因为从辅助触摸中截取屏幕截图时不会调用这些方法。
我在应用程序中使用了这种方法。它允许用户截取屏幕截图,但最终图像没有内容。 没有注意到对其他 UI 控件有任何不利影响。
将其添加到 AppDelegate.cs 中,
public override void OnActivated(UIApplication application)
{
base.OnActivated(application);
SecureScreenCapture();
}
bool isAntiScreenshotModeEnabled;
private void SecureScreenCapture()
{
if (isAntiScreenshotModeEnabled)
return;
var uiWindow = UIApplication.SharedApplication.ConnectedScenes
.OfType<UIWindowScene>()
.SelectMany(s => s.Windows)
.FirstOrDefault(w => w.IsKeyWindow);
var textFieldSecured = new UITextField();
textFieldSecured.SecureTextEntry = true;
uiWindow.AddSubview(textFieldSecured);
uiWindow.Layer.SuperLayer?.AddSublayer(textFieldSecured.Layer);
textFieldSecured.Layer.Sublayers?.Last().AddSublayer(uiWindow.Layer);
isAntiScreenshotModeEnabled = true;
}
可以通过使用
UITextField
的参考并切换 SecureTextEntry
再次启用/禁用屏幕捕获