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

相关推荐
江城月下30 分钟前
从零开始:我在 Mac M1 上搭建离线 AI 知识库的实战记录
人工智能·macos
Andy_GF14 小时前
iOS26 系统适配-直接隐藏 UIBarButtonItem 的 Liquid glass 效果
ios
wjm04100617 小时前
ios学习路线-- swift基础2
学习·ios·swift
开心就好202518 小时前
全面解析WhatsApp Web抓包:原理、工具与安全
后端·ios
程序喵大人19 小时前
OpenClaw的成功是AI Agent的“iPhone时刻”吗?
人工智能·ios·iphone·openclaw
marteker20 小时前
苹果的冰球营销:用iPad设计面具,讲述科技之外的情感故事
科技·ios·ipad
H_老邪21 小时前
贪心算法的应用
算法·ios·贪心算法
UXbot1 天前
APP原型生成工具测评
android·前端·人工智能·低代码·ios·开发·app原型
掘根1 天前
【即时通讯项目】环境搭建9——语言平台
ide·macos·xcode
游戏开发爱好者81 天前
如何使用Instruments和Keymob进行Swift应用性能优化分析
开发语言·ios·性能优化·小程序·uni-app·iphone·swift