我需要配置我的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
}
1条答案
按热度按时间wgeznvg71#
标准编辑操作中没有
replace
选择器,因此它无论如何都无法工作。action.description
检查是可以的,但是如果你想直接在符合UIView
的类之外检查选择器,你必须指定声明选择器的类型,例如paste