在Swift中替换默认手势识别器的正确方法

时间:2015-02-13 13:43:32

标签: ios xcode swift uitextfield uigesturerecognizer

我试图在UITextField中禁用默认的长按手势识别器,以便我可以添加自己的长按手势识别器。我这样做的代码如下:

    for recognizer:UIGestureRecognizer in textField.gestureRecognizers as! [UIGestureRecognizer] {
        if recognizer is UILongPressGestureRecognizer{
        recognizer = myCustomRecognizer
        }
    }

但这给了我一个运行时错误,说它在解开一个可选值时发现nil,这让我觉得它没有找到任何手势识别器?这是正确的方法吗?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我确信UITextField未在内部实施中使用手势识别器,而是直接处理来自UIControl methods的触摸事件。

因此,我认为您有一些选择,因为您仍尝试使用相同的触控行为,我建议您查看UITextFieldDelegate methods并查看是否无法覆盖这样的行为。具体来说,是textFieldShouldBeginEditing:方法。

如果这不允许您完成您正在尝试的内容,则必须创建UITextField的自定义子类并自行实现触摸事件。这应该只是作为最后的手段尝试。

  

即使你是子类,你仍然可以通过在你覆盖的每个方法中调用super来使用父类行为。