【发布时间】:2017-12-19 08:22:05
【问题描述】:
我有 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()
}
}
【问题讨论】:
-
究竟是什么问题?点击文本字段时没有出现键盘?
-
默认设置 currentTag = 1。我不确定我是否理解正确
-
@bhanupriya 是的,键盘没有出现,我想我在创建键盘之前就破坏了它,因为在成为第一响应者的过程中,我立即更改了第一响应者。我也想出答案。而不是使用 textFieldDidBeginEditing 我使用 textFieldShouldBeginEditing
-
我的回答
codefunc textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { if textField.tag != currentTag { let currentResponder = textField.superview?.viewWithTag(self.currentTag) as? UITextField currentResponder?.becomeFirstResponder() return false } return true } -
如果文本没有条件,则自动出现textfield,无需编写代码处理
标签: ios swift3 uitextfield becomefirstresponder