在 uitextfield 中禁用查找和共享文本选择

Posted

技术标签:

【中文标题】在 uitextfield 中禁用查找和共享文本选择【英文标题】:Disable Look Up & Share on text selection in uitextfield 【发布时间】:2021-04-04 07:06:22 【问题描述】:

如何仅对 uitextfield 中的文本选择禁用“查找”和“共享”。以下是我尝试过的快速代码

override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool 
        if action == #selector(copy(_:)) || action == #selector(paste(_:)) || action == #selector(delete(_:)) || action == #selector(cut(_:))
        
            return true
         else if action == Selector(("_lookup:")) || action == Selector(("_share:")) || action == Selector(("_define:")) 
            return false
        
        return super.canPerformAction(action, withSender: sender)
    

我只想显示剪切、复制、粘贴和删除,无论是否选择文本。

【问题讨论】:

【参考方案1】:

下面的代码对我有用,可以禁用“共享”但不能“查找”。如果您能找到有关禁用查找的信息,请更新我。另外,不要忘记在 Storyboard Identity Inspector 中将 textField 的类更改为 CustomUITextField 类

class CustomUITextField: UITextField 

    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool 
        
        if action.description.contains("_share")
        
            return false
        

        return super.canPerformAction(action, withSender: sender)
    

【讨论】:

【参考方案2】:
class CustomActionTextField: UITextField 
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool 
        if action.description.contains("_share") // block "Share"
            || action.description.contains("_translate") // block "Translate"
            || action.description.contains("_define") // block "Look Up" 
            return false
        
        return super.canPerformAction(action, withSender: sender)
    

您可以通过print(action.description)查看更多操作

【讨论】:

以上是关于在 uitextfield 中禁用查找和共享文本选择的主要内容,如果未能解决你的问题,请参考以下文章

在 UITextField 中禁用“定义”

UITextField:更改禁用文本字段的外观

点击另一个 UITextField 后自动禁用键盘

如何禁用替换、插入绘图、查找、学习、说话、说话..、暂停 UItextfield?

如何在不触摸或点击文本字段的情况下从动态创建的 UITextField 获取文本(禁用用户交互)?

如何在UITextField和UISearchBar中禁用长按手势识别器?