iOS UITExtField에서 복사 및 붙여넣기 금지
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
는 입력란에 대한 사용자의 동작을 제어할 수 있습니다.
cut: //
copy: //
select: //
selectAll: //
paste: //
delete: //
_promptForReplace: // Replace...
_transliterateChinese: // <=>
_showTextStyleOptions: // B/U
_define: // Define
_addShortcut: // Learn...
_accessibilitySpeak: // Speak
_accessibilitySpeakLanguageSelection: // Speak...
_accessibilityPauseSpeaking: // Pause
_share: // ...
makeTextWritingDirectionRightToLeft: //
makeTextWritingDirectionLeftToRight: //
많은 조작이 기본적으로 개방되어 있음을 알 수 있다.외워 쓰기를 사용하지 않으려면 전체적으로 사용하지 않기를 권장하거나, 어떤 조작을 필요로 하는지, 이 조작을 사용하지 않으려면, 다른 것은 모두 금지됩니다.
코드는 다음과 같습니다.
// ( 、 、 )
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{
UIMenuController *menuController = [UIMenuController sharedMenuController];
if (menuController) {
[UIMenuController sharedMenuController].menuVisible = NO;
}
return NO;
}
// -
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
// 、
if (action == @selector(paste:))
return YES;
return NO;
}
주의: UITExtField의 분류를 써서 canPerformAction 방법을 다시 쓰고 입력 상자에 필요한 동작에 대한 권한을 열어야 합니다.
demo 코드는 다음과 같습니다.
#import "UITextField+SET.h"
@implementation UITextField (SET)
// -
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (self.tag == 100) {
// 、
if (action == @selector(paste:))
return YES;
}else if (self.tag == 101){
// 、 、 、
if (action == @selector(copy:) || action == @selector(select:) || action == @selector(selectAll:))
return YES;
}
return NO;
}
@end
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) UITextField *pasteField;
@property (nonatomic, strong) UITextField *noneField;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.pasteField = [[UITextField alloc] initWithFrame:CGRectMake(20, 100, 200, 30)];
self.pasteField.layer.borderWidth = 0.5f;
self.pasteField.layer.borderColor = [UIColor blackColor].CGColor;
self.pasteField.placeholder = @" ";
self.pasteField.delegate = self;
self.pasteField.tag = 100;
[self.view addSubview:self.pasteField];
self.noneField = [[UITextField alloc] initWithFrame:CGRectMake(20, 200, 200, 30)];
self.noneField.layer.borderWidth = 0.5f;
self.noneField.layer.borderColor = [UIColor blackColor].CGColor;
self.noneField.placeholder = @" 、 、 ";
self.noneField.delegate = self;
self.noneField.tag = 101;
[self.view addSubview:self.noneField];
}
@end
demo git 주소:https://github.com/ITHanYong/UITextField-banCopyPaste.git
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.