已禁用UITextView在长按

时间:2017-08-02 19:19:46

标签: ios swift

我有一个UITextView子类,我专门禁用所有上下文菜单选项:

class MyTextView: UITextView {

    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        return false
    }
}

我将MyTextView的实例添加到我的应用中显示的视图中。我为MyTextView的实例提供了以下值:isEditable = false

但是,当我长按UITextView时,我得到以下内容:

enter image description here

这似乎是一个错误,因为此菜单中没有任何内容?关于如何防止这种情况的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:2)

因为selectable属性处于活动状态。因此,您可以“选择”文本的一部分,iOS默认行为是显示此弹出窗口。

您可以通过情节提要或代码禁用此属性。

故事板: 在故事板上,选择文本视图并转到属性检查器选项卡...搜索behavior并取消选中selectable复选框。

或者,如果您愿意,可以通过代码解决它: 在viewDidLoad方法中,将属性isSelectable设置为false

MyTextView.isSelectable = false

答案 1 :(得分:1)

那不是"菜单"。它只是放大了印刷机发生地区的事情:

enter image description here

屏幕截图中的空白只是因为您没有文字,所以我们不会放大任何内容。长按结束后菜单出现,放大镜消失了 - 没有出现,所以你的代码工作正常。

通过更改代码以返回true,您可以轻松地看到这一点。空放大镜将像现在一样出现,然后当它消失时,菜单出现。因此,我们已经证明你所看到的不是"菜单"。