我知道还有其他主题,但我似乎无法找到如何实现它.
我试图将UITextField限制为只有5个字符
优选字母数字和 - 和.和_
我见过这段代码
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool
{
let maxLength = 4
let currentString: NSString = textField.text
let newString: NSString =
currentString.stringByReplacingCharactersInRange(range, withString: string)
return newString.length <= maxLength
}
Run Code Online (Sandbox Code Playgroud)
和
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let length = count(textField.text.utf16) + count(string.utf16) - range.length
return length <= 10
}
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何实际实现它或我应该换出哪个"textfield"我的自定义命名为UITextField
我试图通过使用正则表达式删除某些字符来验证 TextField 中的用户输入。不幸的是,我遇到了text递归调用自身 var的 didSet 方法的问题。
import SwiftUI
import Combine
class TextValidator: ObservableObject {
@Published var text = "" {
didSet {
print("didSet")
text = text.replacingOccurrences(
of: "\\W", with: "", options: .regularExpression
) // `\W` is an escape sequence that matches non-word characters.
}
}
}
struct ContentView: View {
@ObservedObject var textValidator = TextValidator()
var body: some View {
TextField("Type Here", text: $textValidator.text)
.padding(.horizontal, 20.0)
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}
Run Code Online (Sandbox Code Playgroud)
在swift 文档(请参阅 AudioChannel 结构)中,Apple 提供了一个示例,其中在其自己的 didSet 方法中重新分配了一个属性,并明确指出这不会导致再次调用 …
我试图制作一个 SwiftUI 应用程序,在其中输入一个字母后TextField,光标会自动移动到下一个TextField. 用户界面非常像这样。
在 Swift/IB 中,看起来这是通过委托完成的,并在这篇文章中添加了一个目标: 如何在 Swift 中自动移动到下一个 UITextField
但是找不到任何在 SwiftUI 中使用委托/目标的文档。
我尝试关注这篇文章:
SwiftUI TextField max length
但这对我不起作用。设置.prefix(1)似乎没有什么区别。在TextField仍然接受任何字符数量,当移动到下一个TextField不降低进入到只有第一个字符的字符。
在SwiftUI的当前状态下,是否可以TextField在输入1个字符后自动移动到下一个?
谢谢你的帮助!