ios - swift/iOS : Tap Gesture to find which text field just became the first responder

标签 ios swift

<分区>

我在 100 个文本字段中的 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。

我需要在此处使用点击功能,因此我无法摆脱它以支持文本委托(delegate)。

如果我可以将被接入此函数的 textField 传入,然后在我运行该 block 的其余部分之前强制它成为第一响应者,我就可以完成此操作,但我认为没有办法通过

有没有其他方法可以使它与点击手势识别器一起工作?

最佳答案

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

@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
            }
        }
    }
}

关于ios - swift/iOS : Tap Gesture to find which text field just became the first responder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50184339/

相关文章:

ios - 点击手机配件

ios - 使用 swift 4 进行 JSON 编码/解码

swift - UIButton 创建错误 - "unrecognized selector sent to instance"

swift - 程序混淆了 GKAgent2D 位置和 SpriteKit 位置

function - Swift 类函数

iphone - 如何在 Xcode 4.2 中添加 entitlements.plist?

ios - 如何在特定时间播放音频时调用 Action ?

objective-c - iOS Cross Dissolve 没有较暗的中间

ios - 如何禁用 Firebase 电话身份验证的限制?

ios - 如何在 Swift 3 的另一个闭包内设置 UIButton 的 isSelected 属性