Ios UITextField如何禁用粘贴?

Ios UITextField如何禁用粘贴?,ios,objective-c,uitextfield,Ios,Objective C,Uitextfield,UITextField如何禁用粘贴?覆盖canperformation:withSender:方法,以返回NO,用于不允许的操作: - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(paste:)) return NO; if (action == @selector(select:))

UITextField如何禁用粘贴?

覆盖
canperformation:withSender:
方法,以返回
NO
,用于不允许的操作:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
    {
        if (action == @selector(paste:))
            return NO;
        if (action == @selector(select:))   
            return NO;   
        if (action == @selector(selectAll:))   
            return NO;  
        return [super canPerformAction:action withSender:sender];
    }
在上面的代码中,您只需要为粘贴而编写

另一种方式

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    if (menuController) {
        [UIMenuController sharedMenuController].menuVisible = NO;
    }
    return NO;
}
也检查

已编辑

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
            return false
}
在iOS 7中,您可以执行以下操作:

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

override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    if action == #selector(copy(_:)) || action == #selector(paste(_:)) {
        return false
    }

    return true
}

如果要在文本字段上打开日期选择器或选择器视图,请单击下面的“代码工作”。

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
            return false
}
在类中添加以下两个方法

//Hide Menu View
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {

    if YOURTEXTFIELD.isFirstResponder {
        DispatchQueue.main.async(execute: {
            (sender as? UIMenuController)?.setMenuVisible(false, animated: false)
        })
        return false
    }

    return super.canPerformAction(action, withSender: sender)
}
//必须实施

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
            return false
}

彭宏在这个问题上给出了这个答案:哦,对不起,我以后不再重复这个问题了。承诺。在iOS 7中不起作用这对我来说在iOS 7中也不起作用。iOS 7NSOperationQueue解决方案中上次编辑(即NSOperationQueue)的工作在iOS 8中起作用。Thanks@iPatel-我在模拟器里试过。在它的工作装置。谢谢。