按下返回键时如何通过多个文本字段输入进行选项卡?

Posted

技术标签:

【中文标题】按下返回键时如何通过多个文本字段输入进行选项卡?【英文标题】:How to tab through multiple textField inputs when return key is pressed? 【发布时间】:2019-06-25 17:24:55 【问题描述】:

我在 FormController 中有一个包含多个输入的表单。每当用户按下返回键时,我希望它将光标移到下一个 textField 而不关闭并重新打开键盘。但是,textField 输入位于向文本字段添加自定义的包装类 textFieldContainer 内。这个类也在项目的其他地方使用,所以我不想编辑这个类。我是 Swift 新手,所以我想知道如何在 FormController 类中实现 textFieldShouldReturn 函数。

我已经研究过这个问题,并且我有 textFieldShouldReturn 的实现,但我不知道把它放在哪里。我认为这将涉及每个文本字段上的标签并在标签之间循环。

【问题讨论】:

【参考方案1】:

你尝试过这样的事情吗? 您应该能够为这些创建的文本字段分配一个标签,然后使用以下代码。

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    let txtTag:Int = textField.tag    
    if let next = self.view.viewWithTag(txtTag+1) as? UITextField 
        next.becomeFirstResponder()
    else
        textField.resignFirstResponder()
    

    return true

或者与此非常相似的东西应该这样做。

【讨论】:

我已经尝试过了,但是由于 FormController 使用的是 textFieldContainer 而不是 UITextField,所以它不起作用。 您必须能够访问底层文本字段.. 或者您是否使用递归函数来查找子视图。就是这样。 我可以使用emailTextField.textField访问文本字段,但是我不知道如何在FormController中实现textFieldShouldReturn函数以便它工作 只是把函数放在类里?还是在viewWillAppear下,还是在哪里? hm.. 如果您可以访问文本字段,您不能也将代表和标签传递给他们吗? form.textfield.delegate = self 以这种方式?【参考方案2】:

我最终解决了这个问题,方法是使用一个名为 shouldReturnKeyPressTab 的函数为 textFieldContainer 创建一个委托,然后在 FormController 中使用它。然后我告诉 shouldReturnKeyPress 使用该函数的委托。

【讨论】:

以上是关于按下返回键时如何通过多个文本字段输入进行选项卡?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Tab 键时如何更改文本字段选择顺序

在 Swift 中按下返回键时在文本字段之间切换

当我按 Enter 键时,选项卡控件的选项卡页会关闭

输入验证器效果不能通过单击起作用,只能通过选项卡按钮起作用

按下特殊键时的jqGrid多选行为

在表单字段中输入文本,在提交时生成多个 URL 并在新选项卡中打开链接