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的点击事件和滑动事件。

相关推荐
用户223586218209 小时前
WebKit WebPage API 的引入尝试与自研实现
ios
啦啦啦!10 小时前
ChatGPT和Gemini的接入和封装
人工智能·ios·chatgpt
aosky10 小时前
手机远程畅玩OpenAI Codex
macos·智能手机·cocoa
报错小能手11 小时前
ios开发方向——swift并发进阶核心 async/await 详解
开发语言·ios·swift
开心就好202511 小时前
HTTPS超文本传输安全协议全面解析与工作原理
后端·ios
Digitally12 小时前
荣耀手机数据迁移至 iPhone 教程
智能手机·cocoa·iphone
牛马11112 小时前
Flutter iOS 权限配置完整指南(定位权限)
flutter·ios
A_QXBlms12 小时前
多账号轮询架构 — 利用企销宝iPad协议突破单账号群发次数限制
ios·架构·ipad
HH思️️无邪13 小时前
Flutter + iOS 实战指南:教程视频 PiP + 退桌面(可复用模板)
flutter·ios
A懿轩A13 小时前
【2026 最新】Python 下载与安装:在 macOS 下使用 Homebrew 和 pyenv 完美管理多版本 Python
python·macos·mac