swift canPerformAction(_ action:选择器,withSender发送器:UITextView中的任何?)函数都无法识别“replace(_:)”操作

ycl3bljg  于 2023-09-29  发布在  Swift
关注(0)|答案(1)|浏览(133)

我需要配置我的UITextView,以便它只通过“编辑”菜单执行一组选定的操作。我尝试覆盖“canPerformAction(_ action:选择器,withSender发送器:#21453;的功能来实现这一点。

class NewTextView: UITextView {

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

}
但是当我试图检查'replace(_:)'选择器时,我得到了以下错误。它说“无法在作用域中找到'replace'”。error screenshot.
现在我已经通过检查它的描述来处理它,但是我不确定这个方法有多健壮。

if action.description == "replace:"
{
    return true
}
wgeznvg7

wgeznvg71#

标准编辑操作中没有replace选择器,因此它无论如何都无法工作。
action.description检查是可以的,但是如果你想直接在符合UIView的类之外检查选择器,你必须指定声明选择器的类型,例如paste

if action == #selector(UIResponder.paste(_:))

相关问题