【发布时间】:2018-11-11 19:44:39
【问题描述】:
我试图让我的 UITextFields 在按下返回按钮时切换到下一个。这是我的代码:
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
// Try to find next responder
if let nextField = textField.superview?.superview?.viewWithTag(textField.tag + 1) as? UITextField {
nextField.becomeFirstResponder()
print("success")
} else { //if textField.text != nil {
textField.resignFirstResponder()
print("error")
}
return false
}
我一直将此代码用于其他项目。但是,这是一个例外。我在它自己的堆栈视图中拥有每个元素,并且所有这些堆栈视图都在超级视图堆栈视图中。运行应用程序后,我按下返回按钮,然后它转到 else 语句并辞去第一响应者的职务。我需要它来运行nextField.becomesFirstResponder()
Here is a screenshot
【问题讨论】:
-
有什么问题??
-
你不是忘记设置每个文本字段的代表了吗?
-
我设置了代表和文本字段的标签。看截图。
-
从不假设 UI 组件的私有子视图结构。
-
我认为问题是,if let 语句在 superview 中找不到其他 textField,因为 superview 是由其他堆栈视图组成的堆栈视图,每个 textField 都有自己的堆栈视图.
标签: ios swift uitextfield uistackview