按下 return 按钮时在 UITextFields 之间切换
Switch between UITextFields when return button is pressed
我试图在按下 return 按钮时让我的 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
}
我一直在其他项目中使用此代码。但是,这是一个例外。我在它自己的堆栈视图中拥有每个元素,并且所有这些堆栈视图都在父视图堆栈视图中。一旦我 运行 应用程序,我按下 return 按钮,它会转到 else 语句并让第一响应者辞职。我需要它 运行 nextField.becomesFirstResponder()
Here is a screenshot
创建 Outlet Collection 并将每个文本字段连接到它
@IBOutlet var textFields: [UITextField]!
在文本字段委托函数之后使用这个:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
let nextIndex = textField.tag + 1
if textFields.count > nextIndex {
let nextField = textFields[nextIndex]
nextField.becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
return false
}
解决私密问题
if let nextField = self.view.viewWithTag(textField.tag + 1) as? UITextField
但它的问题在于性能 viewWithTag
在子视图中递归搜索
我试图在按下 return 按钮时让我的 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
}
我一直在其他项目中使用此代码。但是,这是一个例外。我在它自己的堆栈视图中拥有每个元素,并且所有这些堆栈视图都在父视图堆栈视图中。一旦我 运行 应用程序,我按下 return 按钮,它会转到 else 语句并让第一响应者辞职。我需要它 运行 nextField.becomesFirstResponder()
Here is a screenshot
创建 Outlet Collection 并将每个文本字段连接到它
@IBOutlet var textFields: [UITextField]!
在文本字段委托函数之后使用这个:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
let nextIndex = textField.tag + 1
if textFields.count > nextIndex {
let nextField = textFields[nextIndex]
nextField.becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
return false
}
解决私密问题
if let nextField = self.view.viewWithTag(textField.tag + 1) as? UITextField
但它的问题在于性能 viewWithTag
在子视图中递归搜索