Swift / iOS:点击手势以查找哪个文本字段成为第一个响应者

时间:2018-05-04 23:42:39

标签: ios swift

我在11个文本域中有11个嵌入了11个轻敲手势识别器。这些文本字段都存储在名为boxArray的数组中。

我的目标是,当点击11个文本字段中的一个时,我想知道哪个文本字段成为第一个响应者。这就是我的......

@objc func tappedTextField(_ sender: UITapGestureRecognizer) {
    for i in 0...99 {
        if (boxArray[i]?.isFirstResponder)! {
            if let index = boxArray.index(of: boxArray[i]) {
            print(index)
            break
            }
        }
    }
}

这里的问题是当点击文本字段时。这个功能是打印最后一个第一响应者,而不是谁刚刚成为第一个响应者。因此,如果我在当前的第一响应者文本字段13中,并且我点击文本字段索引52以成为第一响应者。它将打印13。

我需要在这里使用点击功能,所以我无法摆脱它,转而支持文本代理。

我可以完成这个,如果我可以传入被触发到这个函数的textField,然后在我运行剩下的块之前强制它成为第一个响应者,但我不认为有办法传递它。

还有其他方法可以使用点击手势识别器来完成这项工作吗?

1 个答案:

答案 0 :(得分:1)

我认为比较gestureView更好,因为响应者尚未分配到最近点击的文本字段或使用标记

@objc func tappedTextField(_ sender: UITapGestureRecognizer) {
    for i in 0...99 {
        if  ( boxArray[i] == sender.view ) {
            if let index = boxArray.index(of: boxArray[i]) {
            print(index)
            break
            }
        }
    }
}