Ios becomeFirstResponder不在swift 3中显示键盘
我有4个文本字段对齐在一起,每个都有一个标记(1,2,3,4),它作为代码输入。我想确保当我单击或点击代码输入的当前字段的其他位置时,它会将当前字段作为其第一个响应者 示例场景 1 uu u 如果我单击了第一个文本字段所在的else,它应该将焦点指向第一个文本字段 使用下面的代码,我可以做到这一点,但问题是,如果在代码输入中没有当前的第一响应程序,键盘就不会出现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
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会自动出现,无需编写代码进行处理