如何从 Swift 3 中的 textview 中删除查找和共享

Mil*_*hah 3 uitextview swift

我可以使用这个删除剪切、复制、粘贴、选择、全选

override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    if action == #selector(copy(_:)) || action == #selector(paste(_:)) || action == #selector(selectAll(_:)) || action == #selector(cut(_:))
    {
        return false
    }
    return super.canPerformAction(action, withSender: sender)
}
Run Code Online (Sandbox Code Playgroud)

但我无法删除查找和共享

在此处输入图片说明

谁能建议我如何删除它?

Fer*_*zon 8

如果您真的不想允许任何操作,为什么要专门检查每个操作?只需在您的方法中返回 false 即可。否则,您可以放置​​一个断点并查看您为“操作”调用的内容并为其添加另一个验证

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    print("BlahTextView::canPerformAction: \(action)")
    return false
}
Run Code Online (Sandbox Code Playgroud)

结果,您要删除的 2 突出显示:

BlahTextView::canPerformAction: cut: BlahTextView::canPerformAction: copy: BlahTextView::canPerformAction: select: BlahTextView::canPerformAction: selectAll: BlahTextView::canPerformAction: paste: BlahTextView::canPerformAction: delete: BlahTextView::canPerformAction: _promptForReplace: BlahTextView ::canPerformAction: _transliterateChinese: BlahTextView::canPerformAction: _showTextStyleOptions: BlahTextView::canPerformAction: _lookup : BlahTextView::canPerformAction: _define: BlahTextView::canPerformAction: _addShortcut: BlahTextView::canPerformAction: BlahTextView::canPerformAction: _accessibility:TextpeakViewSpeakeBlahFormViewSpeakh :canPerformAction: _accessibilityPauseSpeaking: BlahTextView::canPerformAction: _share: BlahTextView::canPerformAction: makeTextWritingDirectionRightToLeft: BlahTextView::canPerformAction: makeTextWritingDirectionLeftToRight:

然后你可以这样做:

override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    if action == #selector(copy(_:)) ||
        action == #selector(paste(_:)) ||
        action == #selector(select(_:)) ||
        action == #selector(selectAll(_:)) ||
        action == #selector(cut(_:)) ||
        action == Selector(("_lookup:")) ||
        action == Selector(("_share:")) ||
        action == Selector(("_define:"))
    {
        return false
    }
    return super.canPerformAction(action, withSender: sender)
}
Run Code Online (Sandbox Code Playgroud)

需要备用语法,因为这些方法未公开声明,例如,如果您使用 #selector( share( :)) ,则会出现编译器错误。

查找 - 请使用 ((_define:)) 谢谢。


小智 2

// Make sure 
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    if action == #selector(select(_:))
    {
        return true
    } else {
        return false
    }
}
Run Code Online (Sandbox Code Playgroud)