Become first responder next available (not hidden) 文本字段
Become first responder next available (not hidden) text field
我正在尝试制作一个 Swift 4 iPhone 应用程序,它具有各种用户输入文本字段,当用户按下 Enter 键时转到另一个文本字段。我是用 switch 语句完成的,但是现在我添加了文本字段的容量以根据用户之前的选择隐藏或取消隐藏,我的 switch 语句不再有效,因为我使用了每个文本字段的名称。我无法使用标签。
考虑到某些 UITextFields 将被隐藏,我需要在用户点击 Enter 时更改用户输入的下一个文本字段。
我认为我必须将所有用户输入的文本排列成一个排列,然后使用 while 循环,但我没有取得任何进展。
将 UITextFieldDelegate 添加到您的 class
在 viewDidLoad() 中为每个文本字段设置委托给自己,如下所示:
yourTextfield.delegate = 自己
然后添加这个功能
// Textfield delegate
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField {
case firstTextfield:
firstTextfield.resignFirstResponder()
secondTextfield.becomeFirstResponder()
case secondTextfield:
secondTextfield.resignFirstResponder()
thirdTextfield.becomeFirstResponder()
default:
textField.resignFirstResponder()
}
return false
}
我正在尝试制作一个 Swift 4 iPhone 应用程序,它具有各种用户输入文本字段,当用户按下 Enter 键时转到另一个文本字段。我是用 switch 语句完成的,但是现在我添加了文本字段的容量以根据用户之前的选择隐藏或取消隐藏,我的 switch 语句不再有效,因为我使用了每个文本字段的名称。我无法使用标签。
考虑到某些 UITextFields 将被隐藏,我需要在用户点击 Enter 时更改用户输入的下一个文本字段。 我认为我必须将所有用户输入的文本排列成一个排列,然后使用 while 循环,但我没有取得任何进展。
将 UITextFieldDelegate 添加到您的 class
在 viewDidLoad() 中为每个文本字段设置委托给自己,如下所示:
yourTextfield.delegate = 自己
然后添加这个功能
// Textfield delegate
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField {
case firstTextfield:
firstTextfield.resignFirstResponder()
secondTextfield.becomeFirstResponder()
case secondTextfield:
secondTextfield.resignFirstResponder()
thirdTextfield.becomeFirstResponder()
default:
textField.resignFirstResponder()
}
return false
}