【问题标题】:Can I set different actions when a keyboard is returned?返回键盘时可以设置不同的操作吗?
【发布时间】:2018-02-27 22:43:43
【问题描述】:

我到处搜索,似乎找不到任何东西。例如,我想在同一个屏幕上拥有多个 UITextField。如果我点击一个并输入信息并单击返回,它会执行一项操作。如果您点击第二个并返回键盘,它会执行不同的操作。

任何建议或帮助都会非常感谢!

【问题讨论】:

  • TextField Delegates is Answer textFieldShouldReturn 或利用Notification Observers来管理键盘状态并执行特定操作

标签: swift keyboard action textfield


【解决方案1】:

一种选择是使用标签。在下面的示例中,您可以选择下一个文本字段,并且我们仅在最后一个文本字段上登录。您可以使用案例做任何您想做的事情

//automatically move to the next field
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
    let next = textField.tag + 1
    // Find next responder
    if let nextField = view.viewWithTag(next) as? UITextField {
        nextField.becomeFirstResponder()
    } else {
        // Not found, so remove keyboard.
        textField.resignFirstResponder()
        //do the final action to login
        loginAction()
    }
    return false
}

【讨论】:

  • 您可以通过编程方式设置标签,或者在情节提要中这样做
  • 你可以只为每个字段创建一个 IBOutlet 和 switch textField {,而不是使用标签
【解决方案2】:

从 iOS 9 开始,您可以将 UITextField 的“Primary Action Triggered”事件连接到操作方法。因此,您可以将每个文本字段的“Primary Action Triggered”事件连接到单独的操作方法,以赋予文本字段不同的操作。

查看此答案以获得演示:https://stackoverflow.com/a/26288292/77567

【讨论】:

    【解决方案3】:

    我意识到我真的想多了。再看一看,发现我想做的事情比我想象的要容易得多。谢谢所有帮助过的人! (下面只是一个例子)

     func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if field1.resignFirstResponder() {
            print("yellow")
        }
        if field2.resignFirstResponder() {
            print("blue")
        }
        return (true)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 2021-07-27
      • 2020-12-13
      • 2019-01-01
      相关资源
      最近更新 更多