【发布时间】:2019-12-02 21:55:08
【问题描述】:
我尝试制作一个 SwiftUI 应用程序,在 TextField 中输入一个字母后,光标会自动移动到下一个 TextField。用户界面很像this。
在 Swift/IB 中,看起来这是通过委托完成的,并在这篇文章中添加了一个目标: How to move to the next UITextField automatically in Swift
但找不到任何在 SwiftUI 中使用委托/目标的文档。
我尝试关注这篇文章:
SwiftUI TextField max length
但这对我不起作用。设置.prefix(1) 似乎没有什么不同。 TextField 仍然接受任意数量的字符,并且在移动到下一个 TextField 时不会将输入的字符减少到仅第一个字符。
在 SwiftUI 目前的状态下,是否可以在输入 1 个字符后自动移动到下一个TextField?
感谢您的帮助!
【问题讨论】:
-
我想你已经提到了你的第一个赌注——使用
UIKit。与其仅查看UITextFields,不如创建一个包含所有文本字段(和逻辑)的UIViewController,并使用UIViewControllerRepresentable。是的,这是很多工作。我唯一的另一个想法是使用Compose并在其中添加逻辑以“指向”下一个应该是哪本教科书。不确定焦点,但同样,可能与使用可表示的视图控制器一样多。 -
鉴于目前的情况,如果您需要在文本字段上使用“高级功能”,最好将 UITextField 包装在 Representable 中。毕竟,这就是“纯粹的”SwiftUI TextField 似乎正在做的事情。您可以通过简单地观察通知
UITextField.textDidChangeNotification来了解情况。您会看到它也会为TextField触发,并且作为它的对象,它将为您提供相关的UITextField。 -
感谢两位的回复。希望 SwiftUI 将来能解决这个问题!