【问题标题】:Ios Swift Override double tap of UItextFieldIos Swift Override 双击 UItextField
【发布时间】:2016-07-21 20:28:42
【问题描述】:

我想在 UITextField 上双击编写自定义代码并阻止默认文本编辑和键盘弹出。我已经尝试了以下方法,到目前为止没有任何东西对我有用。请帮我解决这个问题。

let gestureArray = NamTxtBoxVal.gestureRecognizers
var tapGesture = UITapGestureRecognizer()
for idxVar in gestureArray!
{
    if let tapVar = idxVar as? UITapGestureRecognizer
    {
        if tapVar.numberOfTapsRequired == 2
        {
            tapGesture = tapVar
            NamTxtBoxVal.removeGestureRecognizer(tapGesture)
        }
    }
}

let doubleTap = UITapGestureRecognizer(target: self, action: #selector(namFnc(_:)))
doubleTap.numberOfTapsRequired = 2
doubleTap.delegate = self
tapGesture.requireGestureRecognizerToFail(doubleTap)
NamTxtBoxVal.addGestureRecognizer(doubleTap)

我也试过了:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
{

    return false
}

【问题讨论】:

    标签: ios swift2 uitextfield uigesturerecognizer uitapgesturerecognizer


    【解决方案1】:

    我知道你这样做的唯一方法是

    1. 在 UITextField 后面放一个 UIView
    2. 设置 textField 的 userInteractionEnabled = false
    3. 向 UIView 添加双击手势

    这将允许您在 TextField 区域上注册双击,而不会弹出任何键盘或进入编辑模式。

    不确定双击后您打算如何处理 textField,但此时您应该能够以编程方式处理大部分内容。

    代码如下:

    class ViewController: UIViewController {
        @IBOutlet weak var myViewBehindMyTextField: UIView!
        @IBOutlet weak var myTextField: UITextField!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.myTextFieldTapped(_:)))
            tapGesture.numberOfTapsRequired = 2
            myViewBehindMyTextField.addGestureRecognizer(tapGesture)
        }
    
        func myTextFieldTapped(sender: UITapGestureRecognizer) {
            print("Double tapped on textField")
        }
    }
    

    【讨论】:

    • 在您的情况下,单击一次的 TextField 编辑将消失,这是我需要的。
    • 哦,不知道您需要单击一下。对不起。在这种情况下,我不知道如何在键盘出现并迅速消失的情况下执行此操作。
    • @SujayUN 的一个想法是在 UITextField 上方放置一个 clearColor UIView。然后让 UIView 仅在单击时将点击传递给 UITextField,并让 UIView 相应地处理双击。
    • 我也有平移手势来移动屏幕周围的文本字段,所以移动时都很难处理
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2016-12-26
    • 2020-12-20
    • 1970-01-01
    相关资源
    最近更新 更多