iOS 防截屏方法(一)

利用UITextField的安全输入secureTextEntry来实现防截屏效果,上代码:

objectivec 复制代码
	// 将 textField 添加到父视图
    UITextField *textField = [[UITextField alloc] init];
    textField.backgroundColor = [UIColor whiteColor];
    textField.secureTextEntry = YES;
    [self.view addSubview:textField];
    [textField mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.view);
    }];
objectivec 复制代码
	// 需要防截屏内容视图,在这个视图中绘制想要防截屏的UI
	UIView *subView = [[UIView alloc] init];
	
    // 将想要隐藏的内容添加到UITextField的子视图上
    UIView *firstView = textField.subviews.firstObject;
    // 注意:这一步设置非常关键,如果没有这个设置会导致页面事件被UITextField拦截!!!
    firstView.userInteractionEnabled = YES;
    // 将 subView 添加到 firstView
    [firstView addSubview:subView];

上面提到最主要的一点 firstView.userInteractionEnabled = YES;,我们知道UITextField是属于输入框,被点击时会弹起键盘,我们当然可以通过UITextFieldDelegate代理不让键盘弹起,但是键盘不弹起的同时,子视图的事件也被拦截,导致想在防截屏的区域处理事件就做不到了。

通过断点打印查看 firstView 的信息可以发现其 userInteractionEnabled 属性处于 NO 状态 ,我们只要将其设置成YES,就可以让 firstView 可以接收处理事件,不会影响subView的点击事件和滑动事件。

相关推荐
iOS15011015338 分钟前
UIScrollView中的按钮UIButton高亮状态延迟触发、响应慢问题分析
ui·ios·objective-c
●VON30 分钟前
【鸿蒙PC】在 HarmonyOS 上跑 Electron?手把手教你搞定桌面欢迎页!(Mac版)
开发语言·macos·华为·electron·电脑·harmonyos
一见42 分钟前
macOS 上 OpenClaw + QQBot 安装指南
macos
2501_915921431 小时前
iOS APP上架工具,在没有 Mac 的环境中发布苹果应用
android·macos·ios·小程序·uni-app·iphone·webview
AI-小柒1 小时前
巨省Token:OpenClaw安装部署并接入数眼智能特价模型全流程(包含Windows和Mac)
大数据·人工智能·windows·网络协议·tcp/ip·http·macos
一只代码狗1 小时前
OpenClaw 安装教程(Windows&&macOS)
windows·macos·ai·openclaw
今晚务必早点睡1 小时前
Linux和macOS 常用包安装工具梳理
linux·运维·macos
wjm0410061 小时前
ios学习路线 -- Swift基础(1)
开发语言·ios·swift
00后程序员张2 小时前
iOS 应用的 HTTPS 连接端口在网络抓包调试中有什么作用
android·网络·ios·小程序·https·uni-app·iphone
2501_915909062 小时前
iPhone 手机日志实时查看,开发和测试中常用的几种方法
android·ios·智能手机·小程序·uni-app·iphone·webview