UITextField如何禁用粘贴? [复制]

Posted

技术标签:

【中文标题】UITextField如何禁用粘贴? [复制]【英文标题】:UITextField how to disable the paste? [duplicate] 【发布时间】:2013-04-01 14:58:56 【问题描述】:

UITextField如何禁用粘贴?

【问题讨论】:

这个答案是由PengOne PengOne在这个问题中给出的:***.com/questions/6701019/… 哦,对不起,以后不再重复这个问题。承诺。 【参考方案1】:

覆盖canPerformAction: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];
    

在上面的代码中,您只需要为 paste 编写

另一种方式

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

同时检查This link

已编辑

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


如果您想在 TEXTFIELD 上打开日期选择器或选择器视图,请单击下面的代码。

在您的类中添加以下两个方法。

//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 中不工作 这对我来说也不适用于 iOS7。 Last EDITED (i.e. NSOperationQueue) 在 iOS 7 中工作 NSOperationQueue 解决方案适用于 iOS8。谢谢 @iPatel - 我在模拟器中试过。在设备中它的工作。谢谢。

以上是关于UITextField如何禁用粘贴? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何快速禁用 SkyFloatingLabelTextField 中的复制粘贴功能?

如何禁用 UITextField 的选择?

在 UITextView 中禁用光标和复制/粘贴(swift)

在 UITextField 中禁用“定义”

如何禁用 UITextField 的编辑属性? [复制]

如何控制 UITextField 的复制和粘贴弹出位置?