【问题标题】: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 的实现,但我不知道把它放在哪里。我认为这将涉及每个文本字段上的标签并在标签之间循环。

【问题讨论】:

    标签: ios swift


    【解决方案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 使用该函数的委托。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2016-07-02
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多