iOS开发:禁用UItextfield的选择、全选、粘贴的功能

时间:2022-11-06 23:42:14

在iOS开发过程中,有些时候需要禁掉UItextfield自带的选择、全选、粘贴的功能,比如在APP登录界面,账号输入框可以复制粘贴,但是密码输入框就不能粘贴进去。

具体步骤很简单,但是有一点必须要注意,就是必须要新建一个UItextfield的分类或者新建一个继承自UItextfield的子类,这样是为了避免与项目中其他的UItextfield有冲突,然后再在新建的这个分类或者子类中重写对应的方法即可。有两种方法来实现禁用UItextfield的选择、全选、粘贴功能,第一种是选择禁用部分功能的方法,自定义禁用相关功能的方法;第二种是禁用所有输入框功能的方法,具体代码如下所示:

iOS开发:禁用UItextfield的选择、全选、粘贴的功能

iOS开发:禁用UItextfield的选择、全选、粘贴的功能

iOS开发:禁用UItextfield的选择、全选、粘贴的功能

iOS开发:禁用UItextfield的选择、全选、粘贴的功能

最后附上详细代码:

1.BasTextField.m文件:

#import "BasTextField.h"
@implementation BasTextField
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
//方法一:
// 禁用粘贴功能
if (action == @selector(paste:))
return NO; //YES为打开该功能;
// 禁用选择功能
if (action == @selector(select:))
return NO;
// 禁用全选功能
if (action == @selector(selectAll:))
return NO;
return [super canPerformAction:action withSender:sender];


//方法二:
// UIMenuController *menuController = [UIMenuController sharedMenuController];
// if(menuController) {
// [UIMenuController sharedMenuController].menuVisible=NO;
// }
// return NO;
}
@end


2.具体使用的地方的TestViewController类的.m文件:

#import "TestViewController.h"
#import "BasTextField.h"
@interface TestViewController ()<UITextFieldDelegate>
@end
@implementation TestViewController
- (void)viewDidLoad {
[super viewDidLoad];
UITextField * pswTF = [[BasTextField alloc] initWithFrame:CGRectMake(20,70,340,45)];
pswTF.placeholder = @"请输入密码";
[self.view addSubview:pswTF];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}