利用UITextField的安全输入secureTextEntry来实现防截屏效果,上代码:
(图片来源网络,侵删)
// 将 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); }];
// 需要防截屏内容视图,在这个视图中绘制想要防截屏的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的点击事件和滑动事件。
(图片来源网络,侵删)
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...