如果你真的不想允许任何操作,为什么你要特别检查它们中的每一个?只需在您的方法中返回false。否则,你可以放置一个断点,看你要调用的“行动”是什么,并添加另一个验证它
而结果,与2在要删除强调:
BlahTextView :: canPerformAction:切: BlahTextView :: canPerformAction:副本: BlahTextView :: canPerformAction:选择: BlahTextView :: canPerformAction:全选: BlahTextView :: canPerformAction:贴: BlahTextView :: canPerformAction:删除: BlahTextView :: canPerformAction:_promptForReplace: BlahTextView :: canPerformAction:_transliterateChinese: BlahTextView :: canPerformAction:_showTextStyleOptions: BlahTextView :: canPerformAction:_lookup: BlahTextView :: canPerformAction:_define: BlahTextView :: canPerformAction:_addShortcut: BlahTextView :: canPerformAction:_accessibilitySpeak: BlahTextView :: canPerformAction:_accessibilitySpeakLanguageSelection: BlahTextView :: canPerformAction:_accessibilityPauseSpeaking: BlahTextView :: canPerformAction:_share: BlahTextView :: canPerformAction:makeTextW ritingDirectionRightToLeft: 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:"))
{
return false
}
return super.canPerformAction(action, withSender: sender)
}
替代语法是必需的,因为这些方法没有公开声明,你会得到一个编译错误,如果例如,您使用#selector(份额( :))。要
我不想禁用所有......我只是想能够选择... –
如果行动== #selector(选择(_ :)) { 还真 }其他{FALSE} – karthik
使用此条件 – karthik