如何禁用'替换'和'分享' UITextField的选项长按?

时间:2016-06-18 12:13:29

标签: ios uitextfield editing

在UITextField长按,现在有一些选项,即'替换......'和'分享...'除了' cut',' copy',' paste'并且'定义'选项。可以禁用这些“剪切”,“复制”,“粘贴”等功能。并且'定义'选项通过' canPerformAction:withSender'方法,但我找不到一种方法来禁用这些'替换...'和'分享...'选项。是否有任何选择器可用于此或可以通过任何其他方式禁用?有没有人遇到这个并成功禁用这些选项?请建议。

2 个答案:

答案 0 :(得分:0)

您可以拦截长按事件并为您提供自己的实施和所需行为。 请检查接受的答案:
 How to intercept long press on UITextView without disabling context menu?
  或提供允许的行动

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    if (action == @selector(copy:) ||
        action == @selector(selectAll:)) {
        return true;
    }

    return false;
}

有关详情:How to disable copy paste option from UITextField programmatically

答案 1 :(得分:0)

聚会迟到,但一种选择是使用动作的描述。 Apple 尚未将 Share 作为 UIResponderStandardEditActions 项之一公开。因此,解决方法是使用 action's description。不是一个优雅的解决方案,但应该可以解决问题:

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(UIResponderStandardEditActions.copy(_:)) ||
           action.description.contains("_share") { // disabling share
               return false
        } else {
               return super.canPerformAction(action, withSender: sender)
        }
}