Ios becomeFirstResponder不在swift 3中显示键盘

Ios becomeFirstResponder不在swift 3中显示键盘,ios,swift3,uitextfield,becomefirstresponder,Ios,Swift3,Uitextfield,Becomefirstresponder,我有4个文本字段对齐在一起,每个都有一个标记(1,2,3,4),它作为代码输入。我想确保当我单击或点击代码输入的当前字段的其他位置时,它会将当前字段作为其第一个响应者 示例场景 1 uu u 如果我单击了第一个文本字段所在的else,它应该将焦点指向第一个文本字段 使用下面的代码,我可以做到这一点,但问题是,如果在代码输入中没有当前的第一响应程序,键盘就不会出现 func textFieldDidBeginEditing(_ textField: UITextField) { if te

我有4个文本字段对齐在一起,每个都有一个标记(1,2,3,4),它作为代码输入。我想确保当我单击或点击代码输入的当前字段的其他位置时,它会将当前字段作为其第一个响应者

示例场景

1 uu u

如果我单击了第一个文本字段所在的else,它应该将焦点指向第一个文本字段

使用下面的代码,我可以做到这一点,但问题是,如果在代码输入中没有当前的第一响应程序,键盘就不会出现

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

这里我们的自定义响应程序与点击文本字段的默认响应程序重叠,因此我将其延迟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
            )
    }
}

这里我们的自定义响应程序与点击文本字段的默认响应程序重叠,因此我将其延迟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
            )
    }
}

到底是什么问题?键盘没有出现在点击文本字段上?默认设置currentTag=1。我不确定我是否理解您的quscorrectly@bhanupriya是的,键盘没有出现,我想我在创建键盘之前就把它弄坏了,因为在成为第一响应者的过程中,我会立即更换第一响应者。我也找到了答案。我没有使用textFieldDidBeginEditing,而是使用textFieldShouldBeginEditing我的答案
code
func textFieldShouldBeginEditing(uTextField:UITextField)->Bool{if textField.tag!=currentTag{let currentResponder=textField.superview?.viewWithTag(self.currentTag)as?UITextField currentResponder?.becomeFirstResponder()返回false}返回true}
如果文本没有条件,文本字段会自动出现,无需编写代码来处理确切的问题?键盘没有出现在点击文本字段上?默认设置currentTag=1。我不确定我是否理解您的quscorrectly@bhanupriya是的,键盘没有出现,我想我在创建键盘之前就把它弄坏了,因为在成为第一响应者的过程中,我会立即更换第一响应者。我也找到了答案。我没有使用textFieldDidBeginEditing,而是使用textFieldShouldBeginEditing我的答案
code
func textFieldShouldBeginEditing(uTextField:UITextField)->Bool{if textField.tag!=currentTag{let currentResponder=textField.superview?.viewWithTag(self.currentTag)as?UITextField currentResponder?.becomeFirstResponder()返回false}返回true}
如果文本上没有条件,textfield会自动出现,无需编写代码进行处理