如何在Swift iOS中禁用UITextField的双击或长按?

4

UITextField默认显示了选择、全选、剪切和复制功能,当我长按或双击文本框时,这些功能会出现。但我不需要这些功能,请告诉我如何禁用长按或双击手势功能。


请参考:https://dev59.com/Y2w15IYBdhLWcg3wT55c - byJeevan
2个回答

4
以下代码将禁用这些选项:
您需要子类化UITextField并尝试使用此代码来禁用/隐藏插入符号和输入(复制/粘贴)。
override func caretRectForPosition(position: UITextPosition!) -> CGRect {
            return CGRect.zeroRect
        }

    override func selectionRectsForRange(range: UITextRange) -> [AnyObject] {
        return []
    }

    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
        // Disable copy, select all, paste
        if action == Selector("copy:") || action == Selector("selectAll:") || action == Selector("paste:") {
            return false
        }
        // Default
        return super.canPerformAction(action, withSender: sender)
    }

3
这里是Swift 3.0的答案,请尝试以下操作:
override func canPerformAction(_ action: Selector, withSender sender: Any) -> Bool {
    UIMenuController.shared.menuVisible = false
    //do not display the menu
    self.resignFirstResponder()
    //do not allow the user to selected anything
    return false
}

希望这能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接