在可编辑文本上禁用某些UITextView操作

时间:2016-11-28 15:53:44

标签: ios swift uitextview

iOS 10. Swift 3

我用UITextView将它放入我的班级。似乎是删除弹出菜单中某些功能的最佳答案。最初有一个崩溃的问题,我接受并投票认为这个问题的答案是正确的...但是在进一步测试时......我发现代码根本没有按预期工作。

不幸它实际上什么都不做,绝对没有!即使我试图忽略它们,除了编译之外,它们似乎正在捕捉菜单选项,而不是去做它们。

就我在其他SO帖子中所说的那样,它似乎曾经在目标C中工作,但在Swift中却没有?有没有人设法在Swift中获得一个看起来像这样的工作版本,这里有一些微妙的代码更改我在这里缺失。

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

1 个答案:

答案 0 :(得分:1)

您需要重新组织一下您的实现。它应该是:

override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    if (action == #selector(delete)) {
        return false
    } else {
        return super.canPerformAction(action, withSender: sender)
    }
}

如你所知,你忽略了super.canPerformAction的结果并且总是返回true。这很糟糕,因为你的班级没有回应每一个选择器。