Как отключить опцию копирования и вставки из UITextField программно - PullRequest
41 голосов
/ 15 июля 2011

Я делаю регистрационное предупреждение, в котором есть UITextField, где пользователь может ввести свой регистрационный номер.все в значительной степени их, однако я хотел бы удалить функцию копирования и вставки из текстового поля программно, поскольку они не являются версией текстового поля InterfaceBuilder. Я не знаю, как это сделать.далеко ...

- (void)pleaseRegisterDevice {

    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Please Register Device!" message:@"this gets covered" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    regTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
    [regTextField setBackgroundColor:[UIColor whiteColor]];
    regTextField.textAlignment = UITextAlignmentCenter;
    [myAlertView addSubview:regTextField];
    [myAlertView show];
    [myAlertView release];

}

Ответы [ 15 ]

0 голосов
/ 05 сентября 2017

использовать для iOS 7 или более поздней версии

 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    [[UIMenuController sharedMenuController] setMenuVisible:NO animated:NO];
}];
return [super canPerformAction:action withSender:sender];

}

0 голосов
/ 15 декабря 2016

Вы можете расширить текстовое представление или текстовое поле в Swift, как это:

extension UITextView {    
    open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    return false
    }
}
0 голосов
/ 23 сентября 2016

Swift 3.0 версия

class NoMenuTextField: UITextField {
    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
        if (action == #selector(NSObject.paste(_:))) {
            return false
        }
        return super.canPerformAction(action, withSender: sender)
    }
}
0 голосов
/ 02 сентября 2015

Просто установите userInteractionEnabled = NO;

0 голосов
/ 18 мая 2014

Переопределение targetForAction: withSender лучше всего ИМХО:

- (id)targetForAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:)) {
        return nil;
    }
    return [super targetForAction:action withSender:sender];
}
...