Для iOS8.0 +, Xcode 6.0.1, ARC включен
В надежде спасти новичка, как и я, какое-то время реализуя это ...
Для реализации отключения копирования / вставки / вырезать / и т. Д.Вы должны создать подкласс UITextField и переопределить ...
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
Для этого ...
Создать новый класс, который является подклассом UITextField (т.е. новыйФайлы .h и .m должны быть включены в папку вашего приложения).Так File-> New -> «Какао Touch Class» -> Next -> «PasteOnlyUITextField» (например), подкласс «UITextField» -> Next-> Create.
Однажды .hи .m файлы создаются для нашего нового подкласса UITextField с именем "PasteOnlyUITextField" ...
PasteOnlyUITextField.h
#import <UIKit/UIKit.h>
@interface PasteOnlyUITextField : UITextField
@end
PasteOnlyUITextField.m
#import "PasteOnlyUITextField.h"
@implementation PasteOnlyUITextField
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(paste:))
{
return true;
}
return false;
}
@end
Теперь убедитесь, что вы импортируете PasteOnlyUITextField.h, где вы собираетесь его использовать, например, файл YourUIViewController.h ...
#import "PasteOnlyUITextField.h"
Теперь вы должны использовать подкласслибо программно, либо с помощью инспектора идентификации
PasteOnlyUITextField *pasteOnlyUITextField = [[PasteOnlyUITextField alloc] init...];
или ...
Выберите UITextField и перейдите к инспектору идентификации, выберите его класс.
Вы можете изменить логику, связанную с опциями меню, по своему усмотрению ...
Надеюсь, это поможет!Спасибо всем оригинальным авторам.