becomeFirstResponder不显示swift 3中的键盘

时间:2017-07-14 09:30:56

标签: ios swift3 uitextfield becomefirstresponder

我有4个TextField对齐,每个都有一个标签(1,2,3,4),它作为代码输入。我想确保当我点击或点击其他代码的当前字段输入它将使当前字段作为其第一响应者。

示例场景

1 _ _ _

如果我点击其他第一个文本字段,它应该指向第一个文本字段

使用下面的代码我能够这样做但是如果代码输入中没有当前的第一响应者,则问题是键盘不会出现。

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField.tag != currentTag {
        let currentResponder = textField.superview?.viewWithTag(currentTag) as? UITextField
        currentResponder?.becomeFirstResponder()
    }
}

1 个答案:

答案 0 :(得分:3)

这里我们的自定义响应者与被点击的文本字段的默认响应者重叠,因此我将其延迟0.1秒并调用响应者

Swift 3

func textFieldDidBeginEditing(_ textField: UITextField) {
if textField.tag != currentTag {
    let currentResponder = textField.superview?.viewWithTag(currentTag) as? UITextField
    currentResponder?.perform(
                #selector(becomeFirstResponder),
                with: nil,
                afterDelay: 0.1
            )
    }
}