我在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,然后在我运行剩下的块之前强制它成为第一个响应者,但我不认为有办法传递它。
还有其他方法可以使用点击手势识别器来完成这项工作吗?
答案 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
}
}
}
}